類型轉換中的有符號轉換與無符號轉換

int main(){
 char c1 = 0x08;
 char c2 = 0x80;
 unsigned char uc1 = 0x08;
 unsigned char uc2 = 0x80;
 int int_c1 = (int)c1;
 int int_c2 = (int)c2;
 int int_uc1 = (int)uc1;
 int int_uc2 = (int)uc2;
 cout<<hex<<int_c1<<endl;// = 8
 cout<<hex<<int_c2<<endl;// = ffffff80
 cout<<hex<<int_uc1<<endl;// = 8
 cout<<hex<<int_uc2<<endl;// = 80
}

 

解釋:

c1的最高位是0,故轉換到int擴充高位時按0擴充;

c2的最高位是1,故轉換到int擴充高位時按1擴充;

uc1和uc2:無符號擴充高位統一按0擴充

發佈了13 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章