我对 C++ 相当陌生,我在理解 C++ 中的字符减法方面遇到了一些麻烦。
我最初有这个代码
char x='2';
x-='0';
if(x) cout << "More than Zero" << endl;
这返回了大于零作为输出,因此要知道 xi 的值,请尝试此代码。
char x='2';
x-='0';
if(x) cout << x << endl;
我得到空字符(或新行)作为输出。
任何帮助表示赞赏。
原文由 kobe24 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据 C++ 标准(2.3 字符集)
所以任何字符集中相邻数字的编码相差 1。
因此在这个代码片段中
'2'
和'0'
之间的差异(表示这些字符的代码之间的差异;例如,在 ASCII 中,这些代码是 0x32 和 0x30,而在 EBCDIC 中,它们分别是 0xF2 和 0xF0)是相等的到2
。例如,您可以通过以下方式进行检查
或者
如果你只是写
then the operator << tries to output
x
as a printable character image of the value2
becausex
is of typechar
.