Как напечатать f "unsigned long" в C?

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

Ответ 1

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

Ответ 2

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

Ответ 3

  • %lu для unsigned long
  • %llu для unsigned long long

Ответ 4

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

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

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

Ответ 5

Формат %lu.

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

Ответ 6

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

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

Ответ 7

Для int %d

Для long int %ld

Для long long int %lld

Для unsigned long long int %llu