因為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)); 如下: