Я никогда не могу понимать, как распечатать 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
то, что я имею.
%lu
- это правильный формат для unsigned long
. Похоже, что здесь есть другие проблемы, такие как повреждение памяти или неинициализированная переменная. Возможно, покажите нам более широкую картину?
Правильный спецификатор для типа unsigned long - % lu
.
Если вы не получаете точное значение, которое ожидаете, то в вашем коде могут быть проблемы.
Скопируйте сюда свой код. Тогда, может быть, кто-нибудь лучше объяснит вам, в чем проблема.
Формат: % lu
.
Пожалуйста, проверьте различные другие типы данных и их использование в printf здесь
Из всех комбинаций, которые вы пробовали, % ld
и % lu
- единственные, которые вообще являются допустимыми спецификаторами формата printf. % lu
(длинное десятичное число без знака), % lx
или % lX
(длинное шестнадцатеричное с прописными или строчными буквами) и % lo
(длинное восьмеричное число) - единственные допустимые спецификаторы формата для переменной типа unsigned long (конечно, вы можете добавить модификаторы ширины поля, точности и т. д. между %
и l
).