2
我被告知在C的printf中使用的「%a」會顯示數字的十六進制格式。爲了測試它,我打印出的2^10表示:這給帶有%a的printf似乎沒有產生十六進制數字
0x1p+10
printf ("%a", pow(2.0,10));
我很困惑,因爲指數部分「+10」看起來更像是一個十進制格式,而不是十六進制格式。十六進制格式應該是1pA
。我錯在哪裏?
我被告知在C的printf中使用的「%a」會顯示數字的十六進制格式。爲了測試它,我打印出的2^10表示:這給帶有%a的printf似乎沒有產生十六進制數字
0x1p+10
printf ("%a", pow(2.0,10));
我很困惑,因爲指數部分「+10」看起來更像是一個十進制格式,而不是十六進制格式。十六進制格式應該是1pA
。我錯在哪裏?
這是正確的,該格式稱爲double
s的十六進制。
手冊頁說:
對於
a
轉換,將double
參數轉換爲十六進制 符號的風格(使用字母abcdef
)[-]0xh.hhhp[+-]d
[...] 指數由正的或負號後面是表示2
指數一 十進制數,因此,它是正確的,而尾數爲十六進制,指數是STI ll十進制。