Как к printf, “неподписанному длинный” в C?

Я никогда не могу понимать, как распечатать unsigned long тип данных в C.

Предположим unsigned_foo unsigned long, затем я пробую:

  • printf("%lu\n", unsigned_foo)
  • printf("%du\n", unsigned_foo)
  • printf("%ud\n", unsigned_foo)
  • printf("%ll\n", unsigned_foo)
  • printf("%ld\n", unsigned_foo)
  • printf("%dl\n", unsigned_foo)

И все они печатают некоторый -123123123 число вместо unsigned long то, что я имею.

318
задан Tardis 28 October 2017 в 06:21
поделиться

4 ответа

%lu - это правильный формат для unsigned long. Похоже, что здесь есть другие проблемы, такие как повреждение памяти или неинициализированная переменная. Возможно, покажите нам более широкую картину?

473
ответ дан 23 November 2019 в 01:02
поделиться

Правильный спецификатор для типа unsigned long - % lu .

Если вы не получаете точное значение, которое ожидаете, то в вашем коде могут быть проблемы.

Скопируйте сюда свой код. Тогда, может быть, кто-нибудь лучше объяснит вам, в чем проблема.

8
ответ дан 23 November 2019 в 01:02
поделиться

Формат: % lu .

Пожалуйста, проверьте различные другие типы данных и их использование в printf здесь

9
ответ дан 23 November 2019 в 01:02
поделиться

Из всех комбинаций, которые вы пробовали, % ld и % lu - единственные, которые вообще являются допустимыми спецификаторами формата printf. % lu (длинное десятичное число без знака), % lx или % lX (длинное шестнадцатеричное с прописными или строчными буквами) и % lo (длинное восьмеричное число) - единственные допустимые спецификаторы формата для переменной типа unsigned long (конечно, вы можете добавить модификаторы ширины поля, точности и т. д. между % и l ).

23
ответ дан 23 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: