Имеется два модификатора формата, позволяющие функции printf() выводить короткие и длинные целые. Эти модификаторы могут применяться к спецификаторам типа d, i, o, u, x. Модификатор l сообщает функции printf() о том, что далее будет следовать длинный тип данных. Например, %ld означает, что будет выводится значение типа long int. Модификатор h говорит функции printf() о необходимости вывода коротких целых. Например, %hu выводит данные типа short unsigned int.
Модификатор L может стоять перед спецификатором плавающего типа e, f и g , тем самым указывая, далее следуют переменные типа long double.
Модификаторы * и #
Функция printf() поддерживает два дополнительных модификатора для некоторых спецификаторов формата: * и # .
Помещение # перед g, G, f, e или Е обеспечивает наличие десятичной точки в случае отсутствия дробной части. Если перед спецификатором формата х или Х поставить #, то шестнадцатиричное число будет печататься с префиксом 0х. Если перед спецификатором о поместить #, то выведенное число будет иметь в начале 0. Нельзя применять # к остальным спецификаторам формата.
Помимо констант, спецификаторы минимальной ширины поля и точности могут предоставляться аргументами функции printf(). Для реализации этого следует использовать *. Когда форматная строка сканируется, функция будет сопоставлять со звездочкой аргументы в порядке появления. Например, для следющего вызова функции
printf(“%*.*f”,10,4, 123.3);
минимальная ширина поля равна 10, точность – 4, а вводимое значение – 123.3.