我们有以下C ++代码
#include <iostream>
int main()
{
int A = 128;
char B = A;
A = B;
std::cout << "B:= " << B << std::endl;
std::cout << "A:= " << A << std::endl;
return 0;
}
有人可以解释一下,为什么我们得到-128?
答案 0 :(得分:3)
这是因为在您的系统中,char
类型的范围为-128
到127
。
128
不适合该系统上的char
,因此会将其(以实现定义的方式)转换为值-128
。
当您将其分配回int
变量时,保持值-128
没有问题,这就是它所得到的。
作为注释:在这种情况下,实现转换值128
(char) -128
,因为128
以二进制形式表示为10000000
,恰好是签名的8- -128
的位表示。这适用于大量实现。