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,所以是负数,负数表达和打印的时候,用反码表示负数。