int data=0x55667788;
char ch0 = (char *)&data[0];
這句是錯誤的,因爲&的優先順序小於[ ]的優先順序,加個()就對了
char ch0 = ((char *)&data)[0];
char ch1 = ((char *)&data)[1];
printf("0x%8x\n",ch0);
結果列印0xffffff88
printf("0x%8x\n",ch1);
結果列印0x00000077
因爲0x8的最高位是1,所以是負數,負數表達和列印的時候,用反碼錶 碼表示負數。