Sejak С99 pencocokan antara penentu format dan tipe argumen floating-point dalam C konsisten antara printf
dan scanf
. ini
%f
untuk float
%lf
untuk double
%Lf
untuk long double
Kebetulan ketika argumen tipe float
dilewatkan sebagai parameter variadic, argumen tersebut secara implisit dikonversi menjadi tipe double
. Ini adalah alasan mengapa dalam printf
penspesifikasi format %f
dan %lf
setara dan dipertukarkan. Di dalam printf
Anda dapat "cross-use" %lf
dengan float
atau %f
dengan double
.
Tetapi tidak ada alasan untuk benar-benar melakukannya dalam praktik. Jangan gunakan %f
untuk printf
argumen tipe double
. Ini adalah kebiasaan yang tersebar luas yang lahir kembali di tahun C89 / 90, tetapi itu adalah kebiasaan buruk. Gunakan %lf
di printf
untuk double
dan terus %f
dicadangkan untuk float
argumen.