因為0x88 0x99 0xff 都是負數(shù),如0x88 二進制為1000 1000 作為一個char的話 屬于負數(shù),0x88是一個字節(jié)的數(shù)據(jù),調(diào)用printf時,0x88需要擴展為4字節(jié)的數(shù)據(jù)(如果是32位程序的話),擴展時0x88高位為1 所以高位三字節(jié)都補1,查看匯編代碼如下:
如果想正常輸出,可以在printf中讓0x88作為一個unsigned char輸出如printf("0x%x\n", unsigned char(0x88)); 如下: