4
int x = 0xff;
printf("%#x",x);

输出:0xff

printf("%x",x);

输出:ff

为什么输出有差异?#具体做什么的?

4

2 回答 2

6

标准说:

7.21.6 - 2

结果将转换为“替代形式”。... 对于 x(或 X)转换,非零结果的前缀为 0x(或 0X)。

它还有其他有趣的东西(特别是对于花车),但我很少看到它被使用——我老实说我必须查一下才能记住。

于 2012-08-12T14:21:14.423 回答
0

#标志对于不同类型的行为不同。维基百科有一个很好的总结:

对于 g 和 G 类型,不删除尾随零。

对于 f、F、e、E、g、G 类型,输出始终包含小数点。

对于 o、x、X 类型,文本 0、0x、0X 分别被附加到非零数字之前。

来源:https ://en.wikipedia.org/wiki/Printf_format_string#Flags_field

于 2022-03-02T23:02:21.737 回答