众力资讯网

C++输入7,为什么输出55? 明明输入的是7,程序却打印出55。 这不是电

C++输入7,为什么输出55?
明明输入的是7,程序却打印出55。

这不是电脑乱算。问题在于:程序读进来的不是数字7,而是字符'7'。

最小演示:
char digit;
cin >> digit;
cout << digit + 0 << '\n';

输入7后,在常见的ASCII兼容环境里会得到55。因为char参与加法时会先转成对应的字符编码,字符'7'的编码值就是55。

如果题目保证只输入0到9中的一个数字,可以只改这一处:
cout << digit - '0' << '\n';

同样输入7,结果就回到7。字符'0'到'9'的编码是连续的,所以'7'减去'0',刚好得到数字7。

常见错误是直接写减48。虽然在ASCII兼容环境里结果一样,但写'0'更能说明“把数字字符转成数值”,下次读代码也更容易看懂。

注意:这个方法只适用于单个数字字符。输入12时,char只会先读到'1';多位整数应直接用int读取。

猫哥的检查顺序:
1. 先看变量是char还是int
2. 再打印原始读入值
3. 最后用0和9两个边界输入复测

这是原创可复现的C++字符演示,不含学员信息,也不代表提分、获奖或升学结果。

小挑战:输入字符'0'时,digit - '0'会输出几?
少儿编程 编程干货 编程学习 编程启蒙 少儿编程启蒙 孩子学编程 小学生编程 编程思维 青岛少儿编程