Do С99, sự phù hợp giữa các chỉ định định dạng và các loại đối số dấu phẩy động trong C là nhất quán giữa printf
và scanf
. Nó là
%f
cho float
%lf
cho double
%Lf
cho long double
Nó chỉ xảy ra khi các đối số của kiểu float
được truyền dưới dạng tham số matrixdic, các đối số đó được chuyển đổi hoàn toàn thành kiểu double
. Đây là lý do tại sao trong printf
định dạng định dạng %f
và %lf
tương đương và có thể hoán đổi cho nhau. Trong printf
bạn có thể "sử dụng chéo" %lf
với float
hoặc %f
với double
.
Nhưng không có lý do để thực sự làm điều đó trong thực tế. Đừng sử dụng %f
để printf
tranh luận về loại double
. Đó là một thói quen phổ biến được sinh ra từ C89 / 90 lần, nhưng đó là một thói quen xấu. Sử dụng %lf
trong printf
cho double
và tiếp tục %f
dành cho float
đối số.