【发布时间】:2015-08-20 07:50:35
【问题描述】:
通过以下代码,我尝试使用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 说明符似乎是错误的。
【问题讨论】:
-
见here。基本上,使用来自
<inttypes.h>的PRIx64宏。 -
使用
printf("val = %#018"PRIx64"\n", val);打印前导零。不要忘记#include <inttypes.h>。