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. 7 Answers 7

How do you format an unsigned long long int using printf?

#include <stdio.h> int main() { unsigned long long int num = 285212672; //FYI: fits in 29 bits int normalInt = 5; printf(“My number is %d bytes wide and its value is %ul. A normal number is %d.\n”, sizeof(num), num, normalInt); return 0; } Output: My number is 8 bytes wide and its value is 285212672l. … Read more