初学C++编写的加法计算器为何运行后输出结果为0?
代码输出异常的核心原因
出现输入两个1却输出0的结果,是三个代码问题共同导致的:
- 执行顺序完全颠倒:程序实际运行流程为:声明整数变量a、b → 立刻执行
output = a + b计算和值 → 才调用getline读取用户输入的两行内容存进字符串变量 → 输出之前算好的output。等程序读到你输入的两个1的时候,求和计算早就执行完了,读进来的输入从头到尾没有参与任何运算。 - 变量类型与赋值逻辑混乱:你声明的
number1、number2是字符串类型,既不能直接通过number1 = a接收整数a的值(这行本身存在类型不匹配的编译问题,即便在宽松编译规则下能跑,结果也完全不符合预期),也没有做“把读入的字符串转成整数、赋值给a和b”的转换步骤,就算把输入顺序调整正确,存进字符串的数字内容也不会自动转成整数参与运算。 - 未初始化的随机值问题:你声明
int a; int b;的时候没有给两个变量设置初始值,此时变量内存里存的是无意义的随机垃圾值。这次运行时刚好两个随机值相加等于0,就出现了输出为0的现象。
可正常运行的修正代码
去掉冗余的字符串读取逻辑,直接用整数输入流完成功能即可:
#include <iostream> using namespace std; int main () { int a; int b; // 先读取用户输入的两个整数 cin >> a; cin >> b; // 再执行求和计算 int output = a + b; cout << output << endl; return 0; }
调整后的执行逻辑为:声明存储变量 → 读取用户输入值 → 计算和值 → 输出结果,完全匹配加法计算器的预期功能。
内容的提问来源于stack exchange,提问作者Ethen Blackmore
相关产品推荐
相关产品推荐

