首頁
社區(qū)
課程
招聘
為何會出現(xiàn)這個問題
QZ2019 2022-6-26 1382

收藏
1條回答
0346954 2022-7-1 2022-7-1編輯

因為0x88 0x99 0xff 都是負(fù)數(shù),如0x88 二進制為1000 1000 作為一個char的話 屬于負(fù)數(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)); 如下:
圖片描述

回復(fù)