2012-03-02 3 views
1

Извините за возможный основной вопрос, но я пытаюсь понять какой-то код, и я не могу понять, что это означает (%016llx).Печатать строку с `% 016llx`

Я понимаю, что% x является кодировкой HEX, и, насколько мне известно, числа между ними должны быть числом цифр и заполнением 0; но я не могу декодировать последовательность 016ll, и googling не помог так много, как показать пример, в котором он каким-то образом связан с gcc.

Учитывая, что я программист с почти нулевым опытом, вы можете мне помочь?

ответ

6

description of fprintf() in the C99 Standard говорит нам о том, что спецификация %016llx преобразования состоит из

  1. обязательного % характера
  2. 0 флага для заполнения
  3. 16 как «минимальная ширина поля»
  4. в ll как «модификаторы длины»
  5. x спецификатор преобразования

Таким образом, в целом это означает, чтобы написать unsigned long long int в шестнадцатеричной системе счисления, занимающий минимум 16 позиций, проложенный с 0.

2

ll (ell-ell) означает long long. Вы правы насчет остальные, то это означает:

  1. Возьмите long long NUMER (из стека)
  2. Формата его как шестнадцатеричные Спальные на 16 местах с нулевой обивкой слева.
+0

+1 для орфографии, на первый взгляд, я читал 11 (один) – clabacchio

5

ll указывает на то, что аргумент будет интерпретироваться как long longint соответствующего знаковости. В поле x указано шестнадцатеричное число, 0 указывает, что выход будет заполнен нулями, а 16 - это ширина числа для печати.

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