Враховуючи стандарт C99 (а саме проект N1256 ), правила залежать від виду функції: fprintf (printf, sprintf, ...) або scanf.
Тут витягнуті відповідні частини:
Передмова
Це друге видання скасовує та замінює перше видання, ISO / IEC 9899: 1990, із змінами та виправленнями ISO / IEC 9899 / COR1: 1994, ISO / IEC 9899 / AMD1: 1995 та ISO / IEC 9899 / COR2: 1996. Основні зміни попереднього видання включають:
%lf
специфікатор перетворення, дозволений у printf
7.19.6.1 fprintf
Функція
7 Модифікатори довжини та їх значення:
l (ell) Вказує, що (...) не впливає на наступний специфікатор перетворення a, A, e, E, f, F, g або G.
L Вказує, що наступний специфікатор перетворення a, A, e, E, f, F, g або G застосовується до довгого подвійного аргументу.
Ті ж самі правила , встановлені для fprintf
застосовуватися для printf
, sprintf
і аналогічні функції.
7.19.6.2 fscanf
Функція
11 Модифікатори довжини та їх значення:
l (ell) Вказує, що (...) що наступний специфікатор перетворення a, A, e, E, f, F, g або G застосовується до аргументу з вказівником типу на подвійне;
L Вказує, що наступний специфікатор перетворення a, A, e, E, f, F, g або G застосовується до аргументу з покажчиком типу на довге подвійне.
12 Специфікаторами перетворення та їх значеннями є: a, e, f, g Відповідає необов'язково підписаному номеру з плаваючою комою, (...)
14 Специфікатори перетворення A, E, F, G і X також дійсні і поводяться так само, як, відповідно, a, e, f, g і x.
Короткий короткий опис для fprintf
вказаних нижче специфікаторів та відповідних типів:
%f
-> подвійний
%Lf
-> довгий подвійний.
і fscanf
це:
%f
-> плавати
%lf
-> подвійний
%Lf
-> довгий подвійний.
"%lf"
не визначено; у бібліотеках C99 та C11 визначено, що вони такі самі, як"%f"
.