What is difference between %d
and %u
when printing pointer addresses?
For example:
int a = 5;
// check the memory address
printf("memory address = %d\n", &a); // prints "memory address = -12"
printf("memory address = %u\n", &a); // prints "memory address = 65456"
Best Solution
You can find a list of formatting escapes on this page.
%d
is a signed integer, while%u
is an unsigned integer. Pointers (when treated as numbers) are usually non-negative.If you actually want to display a pointer, use the
%p
format specifier.