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

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

предположим 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 что у меня есть.

7 ответов


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


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


  • %lu на unsigned long
  • %llu на без знака долго долго

на int %d

на long int %ld

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

на unsigned long long int %llu


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

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


формат %lu.

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


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

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

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