2010-11-22 3 views
1
#include<stdio.h> 
int main() 
{ 
printf("%#04x",50); 
} 

Кто-то показал мне код выше, и я не мог понять его, так как я использовал printf в программах на C, но выше, чем я видел в своей жизни в первый раз. Почему выше вывода кода печатает, какПочему следующая печать printf 0x32

0x32 

Может кто-нибудь дать мне ссылку или ссылки на некоторые вещи, так что я могу понять это лучше.

+2

Это помогло бы, если бы вы указали то, что ожидаете увидеть. – 2010-11-22 14:39:33

ответ

5

От страницы в printf(3) вручную:

Флаг символов

Характер% следуют ноль или более из следующих флагов:

# — Значение должно быть преобразовано в «альтернативной форма». Для преобразований o первый символ выходной строки равен нулю (путем префикса 0, если он уже не равен нулю). Для преобразований x и X ненулевой результат имеет строку «0x» (или «0X» для преобразований X), добавленную к ней. Для преобразований a, A, e, E, f, F, g и G результат всегда будет содержать десятичную точку, даже если никакие цифры не следуют за ней (как правило, десятичная точка появляется в результатах этих преобразований, только если a цифра). Для преобразований g и G конечные нули не удаляются из результата, как в противном случае. Для других преобразований результат не определен.

Другие флаги опущенные ...

Таким образом,% # Добавляет «0x» к выходу, так как выходной формат x. 0 используется для использования 0 (нули). Затем число 4 говорит, что общее количество символов для печати - четыре. Если бы номер 4 был заменен на 10, то результатом было бы 0x00000032 – в общей сложности 10 символов.

+0

0 не является частью флага для добавления `0x`. Он указывал заполнение нулями вместо пробелов. В этом примере это заканчивается тем, что не имеет значения, потому что нет отступов. – 2010-11-22 15:56:04

5

50 десятичных знаков - 32 шестнадцатеричных.

Помимо этого, documentation должен рассказать вам все, что вам нужно знать.

2

Поскольку% x форматирует заданное значение в шестнадцатеричном формате.

В фактах 0x32 (hex) == 50 (десятичный).

Это хороший номер primer для справки.

+0

Хорошо, это хорошая ссылка. – 2010-11-24 08:09:20

Смежные вопросы