0x%08x
在下面的陈述中意味着什么?
printf("\t\t\t[in func3] i @ 0x%08x = %d\n", &i, i);
是否意味着在0x
前加上结果并给出8位十六进制值?
答案 0 :(得分:0)
printf("\t\t\t[in func3] i @ 0x%08x = %d\n", &i, i);
这里有两个格式字符串,以及相应的参数:
%08x
中的 0x%08x
:打印int
/ unsigned
,其中包含8个十六进制数字,包括前导零(0x
之后)。
%#08x
会更简单。
无论如何,它是Undefined Behavior,因为指针不是int
转换为%p
,void*
,char*
或unsigned char*
后,使用signed char*
打印数据指针。
另一个是%d
,用于以标准十进制表示法打印int
,所以我们希望i
真的是一个。
供参考,此处为printf
:http://man7.org/linux/man-pages/man3/printf.3.html