printf ptr:可以消除前导0x吗?

rwa*_*ace 3 linux printf

Linux printf将%p参数呈现为带有前导0x的十六进制数字.有没有办法让它不打印0x?(需要兼容32位和64位.)

nin*_*alj 6

您可以使用uintptr_tfrom 的格式说明符<inttypes.h>:

#include <inttypes.h>
[...]
printf("%"PRIxPTR"\n", (uintptr_t) p);
Run Code Online (Sandbox Code Playgroud)

这类似于%x对于uintptr_t类型,其能够从/到任何指针类型往返转换的整数类型.