со страницы printf(3)
:
Флаг символов
За символом% следует ноль или более следующих флагов:
# & mdash; Значение должно быть преобразовано в «альтернативную форму». Для o преобразований первый символ выходной строки делается нулевым (с помощью префикса 0, если он уже не был нулевым). Для преобразований x и X ненулевому результату предшествует строка «0x» (или «0X» для преобразований X). Для преобразований a, A, e, E, f, F, g и G результат всегда будет содержать десятичную точку, даже если за ней нет цифр (обычно десятичная точка появляется в результатах этих преобразований, только если цифра следует). Для преобразований g и G конечные нули не удаляются из результата, как это было бы в противном случае. Для других преобразований результат не определен.
Другие флаги опущены ...
Таким образом,% # добавляет «0x» к выводу, поскольку формат вывода x
. Здесь 0 для использования 0
(нули) для заполнения. Тогда число 4 говорит, что общее количество символов для печати - четыре. Если бы число 4 было заменено на 10, результат был бы 0x00000032
& ndash; всего 10 символов.