OK,我想打印一個比較大的unsigned long long
和十進制/十六進制版本我得到相當怪異的結果...無符號長隆 - 怪異輸出
代碼:
unsigned long long a = 1llu<<63;
printf("decimal = %llu\n",a);
printf("hexadecimal = %llx\n",a);
輸出:
decimal = 9223372036854775808
hexadecimal = 8000000000000000
現在,這裏就是:
- 十六進制輸出是正確的。
- 小數輸出不(應該是
9223372036854780000
)
爲什麼這麼回事?我究竟做錯了什麼???
2^63是它打印的內容。我看到這裏沒有問題。 – chris
可能重複?雖然有趣:http://stackoverflow.com/questions/2844/how-do-you-printf-an-unsigned-long-long-int – abelito
@chris真的嗎?我認爲它甚至不適合64位整數,是嗎?如果是這樣,爲什麼? –