原程序
char c = 0xff;
cout<<hex<<"0x"<<(int)c<<endl;
结果:
0xffffffff
修改后程序:
unsigned char c = 0xff;
cout<<hex<<"0x"<<(unsigned int)c<<endl;
结果:
0xff
原因是0xff二进制是11111111
认为第一位是1的为负数,而ffffffff是int中的-1,
原程序
char c = 0xff;
cout<<hex<<"0x"<<(int)c<<endl;
结果:
0xffffffff
修改后程序:
unsigned char c = 0xff;
cout<<hex<<"0x"<<(unsigned int)c<<endl;
结果:
0xff
原因是0xff二进制是11111111
认为第一位是1的为负数,而ffffffff是int中的-1,