2017-02-17 37 views
2

我被告知在C的printf中使用的「%a」會顯示數字的十六進制格式。爲了測試它,我打印出的2^10表示:這給帶有%a的printf似乎沒有產生十六進制數字

0x1p+10 

printf ("%a", pow(2.0,10)); 

我很困惑,因爲指數部分「+10」看起來更像是一個十進制格式,而不是十六進制格式。十六進制格式應該是1pA。我錯在哪裏?

回答

4

這是正確的,該格式稱爲double s的十六進制。

手冊頁說:

對於a轉換,將double參數轉換爲十六進制 符號的風格(使用字母abcdef[-]0xh.hhhp[+-]d [...] 指數由正的或負號後面是表示2

指數一 十進制數,因此,它是正確的,而尾數爲十六進制,指數是STI ll十進制。

相關問題