bodacydo bodacydo - 1 month ago 6
C Question

How to printf "unsigned long" in C?

I can never understand how to print

unsigned long
datatype in C.

Suppose
unsigned_foo
is an
unsigned long
, then I try:


  • 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)



And all of them print some kind of
-123123123
number instead of
unsigned long
that I have.

Answer

%lu is the correct format for unsigned long. Sounds like there are other issues at play here, such as memory corruption or an uninitialized variable. Perhaps show us a larger picture?