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

1

2 Answers

They're both undefined behavior.

To print a pointer with printf, you should cast the pointer to void * and use "%p".

Sophia Al-Mansoor

Sophia Al-Mansoor

Global Business & E-Commerce Reporter

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.