Как напечатать "unsigned long" в C? - PullRequest
310 голосов
/ 09 июля 2010

Я никогда не могу понять, как напечатать 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, которое у меня есть.

Ответы [ 8 ]

459 голосов
/ 09 июля 2010

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

25 голосов
/ 12 июля 2014
  • %lu для без знака long
  • %llu для длинная без знака
21 голосов
/ 07 апреля 2017

Для int %d

Для long int %ld

Для long long int %lld

Для без знака long long int %llu

21 голосов
/ 09 июля 2010

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

9 голосов
/ 22 июня 2013
int main()
{
    unsigned long long d;
    scanf("%llu",&d);
    printf("%llu",d);
    getch();
}

Это будет полезно.,.

9 голосов
/ 09 июля 2010

Формат %lu.

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

8 голосов
/ 09 июля 2010

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

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

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

0 голосов
/ 11 октября 2018

У меня была такая же проблема.Попробуйте "% ul", у меня это работает.

...