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