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