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擴充