我应该使用哪个printf格式说明符来以16进制在32/64位和Windows/POSIX系统下打印64位无符号整数?我看到最接近的是%llX
,但我不确定它是否足够通用。忽略旧编译器(例如Visual Studio 2010)的答案也是可接受的。
<inttypes.h>
中,PRIx64
宏就是你正在寻找的内容。它是一个字符串标记,所以可以这样使用:
fprintf(stdout, "answer = %"PRIx64"\n", val);
由于您指定了%llX
,可能想要大写字母; 使用:PRIX64
。<inttypes.h>
中定义的宏 PRIx64
或 PRIX64 (用于无符号大写十六进制整数)
。