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.
Solution 1:
%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?
Solution 2:
For int %d
For long int %ld
For long long int %lld
For unsigned long long int %llu
Solution 3:
-
%lu
for unsigned long -
%llu
for unsigned long long