What Is the Difference Between %Lx and %Ld When Printing an Address from Pointer?
I Have Tried Googling the First One for %Lx, but I Have No Good Results, but I Have Successfully Searched up %Ld Which Is Just Long Int. Necessary for Printing...
I have tried googling the first one for %lx, but I have no good results, BUT I have successfully searched up %ld which is just long int. Necessary for printing addresses I guess, but what is %lx for?
This is where I am confused:
int main()
{
int value = 25;
int *pointer = &value;
printf("%ld\n", pointer); // prints out the address of variable value( I hope)
printf("0x%lx\n", pointer); // Completely confused here, is this perhaps address in hex?
}
Would be awesome if someone can clear this confusion I am having!
I have ran this code, and I have the results, but I am still not sure what the lx does..I have seriously tried googling this "%lx" in google, but no results explaining it.
Edit: if I use 'p' to print address then have I been wrong in thinking %ld prints address? Confused.
2 Answers
They're both undefined behavior.
To print a pointer with printf, you should cast the pointer to void * and use "%p".