Mengingat standar C99 (yaitu, draft N1256 ), aturan bergantung pada jenis fungsi: fprintf (printf, sprintf, ...) atau scanf.
Berikut adalah bagian yang relevan yang diekstraksi:
Kata pengantar
Edisi kedua ini membatalkan dan menggantikan edisi pertama, ISO / IEC 9899: 1990, sebagaimana telah diubah dan diperbaiki oleh ISO / IEC 9899 / COR1: 1994, ISO / IEC 9899 / AMD1: 1995, dan ISO / IEC 9899 / COR2: 1996. Perubahan besar dari edisi sebelumnya meliputi:
%lf
specifier konversi diizinkan masuk printf
7.19.6.1 fprintf
Fungsi
7 Pengubah panjang dan artinya adalah:
l (ell) Menentukan bahwa (...) tidak memengaruhi penentu konversi a, A, e, E, f, F, g, atau G berikut.
L Menentukan bahwa penentu konversi konversi a, A, e, E, f, F, g, atau G berlaku untuk argumen ganda yang panjang.
Aturan yang sama ditentukan untuk fprintf
melamar printf
, sprintf
dan fungsi serupa.
7.19.6.2 fscanf
Fungsi
11 Pengubah panjang dan artinya adalah:
l (ell) Menentukan bahwa (...) yang menjadi penentu konversi konversi a, A, e, E, f, F, g, atau G berlaku untuk argumen dengan penunjuk tipe menjadi dua kali lipat;
L Menentukan bahwa penentu konversi konversi a, A, e, E, f, F, g, atau G berlaku untuk argumen dengan penunjuk tipe ke panjang ganda.
12 Penentu konversi dan artinya adalah: a, e, f, g Cocok dengan angka floating-point yang ditandatangani secara opsional, (...)
14 Penentu konversi A, E, F, G, dan X juga valid dan berperilaku sama seperti, masing-masing, a, e, f, g, dan x.
Singkat cerita, untuk fprintf
penentu berikut dan jenis yang sesuai ditentukan:
%f
-> dobel
%Lf
-> panjang ganda.
dan untuk fscanf
itu adalah:
%f
-> mengapung
%lf
-> dobel
%Lf
-> panjang ganda.
"%lf"
tidak terdefinisi; di perpustakaan C99 dan C11 itu didefinisikan sama dengan"%f"
.