Ответ 1
%lu
- правильный формат для unsigned long
. Похоже, что здесь есть другие проблемы, такие как повреждение памяти или неинициализированная переменная. Возможно, покажите нам большую картину?
Я не могу понять, как печатать 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
. Похоже, что здесь есть другие проблемы, такие как повреждение памяти или неинициализированная переменная. Возможно, покажите нам большую картину?
Из всех выбранных вами комбинаций %ld
и %lu
являются единственными, которые действительно являются спецификаторами формата printf. %lu
(длинный беззнаковый десятичный знак), %lx
или %lx
(длинный шестнадцатеричный код с строчными или прописными буквами) и %lo
(long восьмеричный) являются единственными допустимыми спецификаторами формата для переменной типа unsigned long (конечно вы можете добавлять модификаторы ширины поля, точности и т.д. между %
и l
).
%lu
для unsigned long%llu
для unsigned long longПравильный спецификатор для unsigned long - %lu
.
Если вы не получаете точного значения, которое вы ожидаете, в вашем коде могут быть некоторые проблемы.
Скопируйте код здесь. Тогда, может быть, кто-то может лучше сказать, в чем проблема.
Формат %lu
.
Пожалуйста, ознакомьтесь с различными типами данных и их использованием в printf здесь
int main()
{
unsigned long long d;
scanf("%llu",&d);
printf("%llu",d);
getch();
}
Это будет полезно.,.
Для int %d
Для long int %ld
Для long long int %lld
Для unsigned long long int %llu