【发布时间】:2021-07-10 06:31:13
【问题描述】:
我写了下面的代码,不明白为什么我cout时得到-61
int main() {
char a= 'a';
char b= 'b';
char c= a+b;
cout<<int(a)<<" ";
cout<<int(b)<<" ";
cout<<int(a+b)<<" ";
cout<<int(c)<<" ";
return 0;
}
**OUTPUT**
97 98 195 -61
【问题讨论】:
-
范围为 -128..127 的有符号字符溢出。
-
@S.M.请创建一个答案并详细说明。
-
在不同编码的平台上,你会得到不同的输出。例如,在 EBCDIC(编码受到 Hollerith 穿孔卡片的强烈影响)中,
'a'为 129,'b'为 130,char将具有无符号行为,除非编译器被标记为将char视为有符号。将它们相加得到 259,模 256 = 3。