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

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

因?yàn)?x88 0x99 0xff 都是負(fù)數(shù),如0x88 二進(jìn)制為1000 1000 作為一個(gè)char的話 屬于負(fù)數(shù),0x88是一個(gè)字節(jié)的數(shù)據(jù),調(diào)用printf時(shí),0x88需要擴(kuò)展為4字節(jié)的數(shù)據(jù)(如果是32位程序的話),擴(kuò)展時(shí)0x88高位為1 所以高位三字節(jié)都補(bǔ)1,查看匯編代碼如下:
圖片描述

 

如果想正常輸出,可以在printf中讓0x88作為一個(gè)unsigned char輸出如printf("0x%x\n", unsigned char(0x88)); 如下:
圖片描述

回復(fù)