int x = 0xff;
printf("%#x",x);
输出:0xff
printf("%x",x);
输出:ff
为什么输出有差异?#
具体做什么的?
标准说:
7.21.6 - 2
结果将转换为“替代形式”。... 对于 x(或 X)转换,非零结果的前缀为 0x(或 0X)。
它还有其他有趣的东西(特别是对于花车),但我很少看到它被使用——我老实说我必须查一下才能记住。
该#
标志对于不同类型的行为不同。维基百科有一个很好的总结:
对于 g 和 G 类型,不删除尾随零。
对于 f、F、e、E、g、G 类型,输出始终包含小数点。
对于 o、x、X 类型,文本 0、0x、0X 分别被附加到非零数字之前。
来源:https ://en.wikipedia.org/wiki/Printf_format_string#Flags_field