表达代表什么?

时间:2014-10-20 23:27:23

标签: c printf

0x%08x在下面的陈述中意味着什么?

printf("\t\t\t[in func3] i @ 0x%08x = %d\n", &i, i);

是否意味着在0x前加上结果并给出8位十六进制值?

1 个答案:

答案 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 转换为%pvoid*char*unsigned char*后,使用signed char*打印数据指针。

另一个是%d,用于以标准十进制表示法打印int,所以我们希望i真的是一个。

供参考,此处为printfhttp://man7.org/linux/man-pages/man3/printf.3.html

的手册页