Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么隐式转换的结果是-128? 我们有以下C++代码< /P> #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; } #包括 int main() { INTA=128; 字符B=A; A=B; std::cout_C++_Char_Int_Implicit Conversion - Fatal编程技术网

为什么隐式转换的结果是-128? 我们有以下C++代码< /P> #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; } #包括 int main() { INTA=128; 字符B=A; A=B; std::cout

为什么隐式转换的结果是-128? 我们有以下C++代码< /P> #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; } #包括 int main() { INTA=128; 字符B=A; A=B; std::cout,c++,char,int,implicit-conversion,C++,Char,Int,Implicit Conversion,这是因为在您的系统上,char类型的范围为-128到127 128不适合该系统上的char,因此它会(以实现定义的方式)转换为值-128 当您将它赋回到int变量时,它保持值-128没有问题,因此它就是这样得到的 注意:在这种情况下,实现转换值128(char)-128因为128以二进制形式表示为10000000,这恰好是-128的有符号8位表示形式。这将适用于大量实现。这是因为在您的系统上字符类型的范围为-128到127 128不适合该系统上的char,因此它会(以实现定义的方式)转换为值-1

这是因为在您的系统上,
char
类型的范围为
-128
127

128
不适合该系统上的
char
,因此它会(以实现定义的方式)转换为值
-128

当您将它赋回到
int
变量时,它保持值
-128
没有问题,因此它就是这样得到的


注意:在这种情况下,实现转换值
128
(char)-128
因为
128
以二进制形式表示为
10000000
,这恰好是
-128
的有符号8位表示形式。这将适用于大量实现。

这是因为在您的系统上
字符
类型的范围为
-128
127

128
不适合该系统上的
char
,因此它会(以实现定义的方式)转换为值
-128

当您将它赋回到
int
变量时,它保持值
-128
没有问题,因此它就是这样得到的


注意:在这种情况下,实现转换值
128
(char)-128
因为
128
以二进制形式表示为
10000000
,这恰好是
-128
的有符号8位表示形式。这将适用于大量实现。

这是因为在您的系统上
字符
类型的范围为
-128
127

128
不适合该系统上的
char
,因此它会(以实现定义的方式)转换为值
-128

当您将它赋回到
int
变量时,它保持值
-128
没有问题,因此它就是这样得到的


注意:在这种情况下,实现转换值
128
(char)-128
因为
128
以二进制形式表示为
10000000
,这恰好是
-128
的有符号8位表示形式。这将适用于大量实现。

这是因为在您的系统上
字符
类型的范围为
-128
127

128
不适合该系统上的
char
,因此它会(以实现定义的方式)转换为值
-128

当您将它赋回到
int
变量时,它保持值
-128
没有问题,因此它就是这样得到的


注意:在这种情况下,实现转换值
128
(char)-128
,因为
128
以二进制形式表示为
10000000
,这恰好是
-128
的有符号8位表示形式。这在许多实现中都适用。

coz char overflow请参见有符号字符可能具有-128到127的限制
无符号字符
会发生什么情况?
字符
在您的案例中显然是有符号的(不一定是这样)-因此128->0x80->128。@PaulR+1用于显示转换。因为字符溢出请参见有符号字符可能有-128到127的限制
无符号字符
会发生什么情况?
字符
在您的案例中显然是有符号的(不一定是这样)-因此128->0x80->128.@PaulR+1用于显示转换。因为字符溢出请参见有符号字符可能具有-128到127的限制无符号字符发生了什么情况?
char
在您的情况下显然是有符号的(不一定如此)-因此128->0x80->128。@PaulR+1用于显示转换。因为字符溢出看到有符号字符可能有-128到127的限制。
无符号字符
字符
在您的情况下显然是有符号的(不一定如此)-因此128->0x80->-128。@PaulR+1用于显示转换。