使用以下代码,我试图使用printf()
输出unit64_t
变量的值。 使用gcc编译代码会返回以下警告:
警告:格式“%x”需要类型为“unsigned int”的参数, 但参数2的类型为“uint64_t” [-Wformat =]
代码:
#include <stdio.h>
#include <stdint.h>
int main ()
{
uint64_t val = 0x1234567890abcdef;
printf("val = 0x%x\n", val);
return 0;
}
输出:
val = 0x90abcdef
期望的输出:
val = 0x1234567890abcdef
如何使用printf()
输出一个64位值的十六进制整数?在这种情况下,x
转换说明符似乎是错误的。
<inttypes.h>
头文件中的PRIx64
宏,即可打印int64_t
类型的值。 - M Oehmprintf("val = %#018"PRIx64"\n", val);
来打印前导零。别忘了#include <inttypes.h>
。 - Daniel