c - Hexadecimal being truncated -
why when attempt print value of argv
(which according eclipse particular run of program below 0x7fffffffd958
) ffffd958
instead of 7fffffffd958
?
int main (int argc, char *argv[]) { printf("%x \n", argv); return 0; }
long story short: invoking undefined behavior because of wrong format specifier. use instead:
printf("%p \n", (void *) argv);
the reason why different value %x
treats argv
32-bit unsigned integer on platform. probably use %lx
(or possibly %llx
), still bad , incorrect practice, since argv
of pointer type.
Comments
Post a Comment