#include <iostream>
using namespace std;
int main()
{
int a = 20000;
char c = a;
cout << c << endl;
int b = c;
if (a != b)
{
cout << b << endl;
cout << "not equal\n";
}
return 0;
}
我想请教一下各位为什么输出b的值会是32啊,我觉得a的值过大,char本身是一个字节嘛,然后char字节的8位应该全部放1啊,那输出应该是-128啊。可是输出b的值是32,书上也说是应该输出32,可是没有解释具体的原因,所以来请教一下各位!谢谢大家
转换的时候不会全部放1,注意下面
这是 2000 的二进制表示
0100 1110 0010 0000
在缩短到
1 byte
的char
后,应该是保留后面的0010 0000
, 而这个数十进制表示就是32