2012-07-04 64 views

回答

2

執行定義;取決於您的平臺上的字節順序和sizeof(int)。你基本上將你的int截斷爲它自己的第一個字節,這顯然是你係統上的最低位。

320 = 0×00 00 01 40 並通過截去到char這始終是一個字節: 0x40的= 64

這就是爲什麼。

編輯:正如丹尼爾菲捨爾指出的,這也取決於CHAR_BIT是< = 8(它現在在大多數情況下,如果不是全部的話)。

+1

爲了完整性:它也取決於'CHAR_BIT'。如果'CHAR_BIT> = 9',在小端機器上,它應該給320.現在,我在哪裏可以找到具有'CHAR_BIT> 8'的下一個實現? –

+0

我認爲沒有現代系統使用非八位字節「char」。 – 2012-07-04 18:56:04

+1

我也這麼認爲。但是仍然有幾個使用36位字的舊機器,所以它不僅僅是這個標準的一個奇怪之處。 –

0

這是一個char指針。所以它指向一個字節。 320不適合一個字節。

0

320 0x0140

64即0x0040

你只是讀取int值的低字節。

0

i相關聯的存儲器指向320或0x0140的整數(即大於一個字節)值。

然後,您將一個指向此整數的指針並將其轉換爲指向char(單個字節)的指針。

然後你打印這個地址的值,在這個例子中是0x40,即LSB。這是你的64

在其他實現價值,你會得到最高位,這將是0x01或1