Как распечатать "unsigned long" в C?


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

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

  • printf("%lun", unsigned_foo)
  • printf("%dun", unsigned_foo)
  • printf("%udn", unsigned_foo)
  • printf("%lln", unsigned_foo)
  • printf("%ldn", unsigned_foo)
  • printf("%dln", unsigned_foo)

и все они печатают какой-то -123123123 вместо unsigned long что у меня есть.

7 277

7 ответов:

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

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

  • %lu на unsigned long
  • %llu на unsigned long long

на int%d

на long int%ld

на длинный инт%lld

на unsigned long long int%llu

int main()
{
    unsigned long long d;
    scanf("%llu",&d);
    printf("%llu",d);
    getch();
}

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

формат %lu.

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

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

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

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