2012-08-12 37 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