int main()
{
char MCU = 0b00000000;
char al_av = 0b10100000;
// Before bit operation
cout << "MCU = " << int(MCU) << endl;
MCU = MCU | al_av;
// After the bit operation
cout << "MCU = " << int(MCU) << endl; // Expected 160, got -96
char temp = 160;
cout << temp; // got the a with apostrophe
return 0;
}
我期望输出为char temp
负数(或警告/错误),因为160超过了[-127,127]间隔,但是结果是ASCII表中的那个(带撇号的a)
关于cpp参考:
char-可以在目标系统上最有效处理的字符表示形式的类型(具有与有符号字符或无符号字符相同的表示形式和对齐方式,但始终是不同的类型)
我不明白用斜体写的内容(也不确定这个问题是否有很大帮助)。是否有任何隐式转换?
为什么带符号的char可以拥有比127大的值?
这不可以。
char x = 231;
在这里,有一个(隐式)整数转换:231是类型的prvalue,在将其转换为(在您的系统上签名)之前int
取值。您可以要求编译器通过发出警告。-25
char
-Wconstant-conversion
char-可以在目标系统上最有效处理的字符表示形式的类型(具有与有符号字符或无符号字符相同的表示形式和对齐方式,但始终是不同的类型)
我不明白用斜体写的是什么
这不涉及到什么类型可以持有,它只是保证了三种类型char
,signed char
并unsigned char
具有共同的特性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句