在vc下做测试
#include<iostream>
using namespace std;
int main(){
char c = 223;
int n = c;
cout<<n<<endl;
system("pause");
return 1;
}
则n输出为负数。
分析如下:
当char转成int的时候,vc下会把char当作有符号数,223二进制为1101 1111,当char强转int的时候(int n = c),n此时内容为:1(中间56位为1)101 1111,即:尽量把char转换为int下的有符号数。
有符号数展现规则为:最高位为1,则为负数,其它位按位取反然后加1.