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.
Out of all the combinations you tried,
%ld
and%lu
are the only ones which are valid printf format specifiers at all.%lu
(long unsigned decimal),%lx
or%lX
(long hex with lowercase or uppercase letters), and%lo
(long octal) are the only valid format specifiers for a variable of type unsigned long (of course you can add field width, precision, etc modifiers between the%
and thel
).The format is
%lu
.Please check about the various other datatypes and their usage in printf here