2012-08-12 70 views
2

int x = 0xff;printf()中的'#'做什么?

printf("%#x",x);

输出:0xff

printf("%x",x);

输出继电器:ff

为什么会出现在输出区别吗? #具体做什么?

+0

如果你谷歌“printf英镑符号”的答案是在第一个结果... – 2012-08-12 14:22:28

+0

@GordonBailey,永远不会有“英镑符号”下查找它。但我会想到简单地查看手册页面。 – 2012-08-12 16:41:05

回答

5

标准表示:

7.21.6 - 2

结果被转换为“‘替代形式’”。 ...对于x(或X) 转换,非零结果具有0x(或0X)的固定值。

它做了其他有趣的事情(特别是对于漂浮物),但我很少看到它使用 - 我老实承认我必须查找它记住。

+1

请注意,如果该值不为零,则只会添加前缀,并且0x/0X与十六进制数字出现在相同的情况下。这很少/从来不是我想要的十六进制,所以我总是使用'​​0x%X'而不是'%#x'或%#X' ... – 2012-08-12 18:02:58

相关问题