Dato lo standard C99 (vale a dire la bozza N1256 ), le regole dipendono dal tipo di funzione: fprintf (printf, sprintf, ...) o scanf.
Ecco le parti rilevanti estratte:
Prefazione
Questa seconda edizione annulla e sostituisce la prima edizione, ISO / IEC 9899: 1990, come modificata e corretta da ISO / IEC 9899 / COR1: 1994, ISO / IEC 9899 / AMD1: 1995 e ISO / IEC 9899 / COR2: 1996. Le principali modifiche rispetto all'edizione precedente includono:
%lf
identificatore di conversione consentito in printf
7.19.6.1 La fprintf
funzione
7 I modificatori di lunghezza e i loro significati sono:
l (ell) Specifica che (...) non ha alcun effetto sul seguente identificatore di conversione a, A, e, E, f, F, g o G.
L Specifica che un seguente identificatore di conversione a, A, e, E, f, F, g o G si applica a un argomento doppio lungo.
Le stesse regole specificate per fprintf
domanda per printf
, sprintf
e funzioni simili.
7.19.6.2 La fscanf
funzione
11 I modificatori di lunghezza e i loro significati sono:
l (ell) Specifica che (...) che un seguente identificatore di conversione a, A, e, E, f, F, g o G si applica a un argomento con puntatore di tipo doppio;
L Specifica che un seguente identificatore di conversione a, A, e, E, f, F, g o G si applica a un argomento con puntatore di tipo a doppio lungo.
12 Gli identificatori di conversione e i loro significati sono: a, e, f, g Corrisponde a un numero in virgola mobile con segno facoltativo, (...)
14 Anche gli identificatori di conversione A, E, F, G e X sono validi e si comportano allo stesso modo rispettivamente di a, e, f, g e x.
Per farla breve, fprintf
vengono specificati i seguenti identificatori e tipi corrispondenti:
%f
-> doppio
%Lf
-> doppio lungo.
e fscanf
perché è:
%f
-> galleggiante
%lf
-> doppio
%Lf
-> doppio lungo.
"%lf"
non è definito; nelle librerie C99 e C11 è definito come"%f"
.