C++编写基础计算器程序运行得到异常输出如何排查解决
问题根因
- 运算符使用错误:你混淆了C++的赋值运算符
=和相等比较运算符==。代码中所有计算结果赋值的语句写的都是类似(num1 + num2) == result,==只会判断左右两边值是否相等,不会把左侧的计算结果写入result变量,这类语句执行后没有任何实际效果。 - 局部变量未初始化:定义
int result时没有给初始值,C++中栈上的局部整型变量未初始化时,存储的是内存空间残留的随机垃圾值,你输出的32764就是这个垃圾值。
修复代码
#include <iostream> using namespace std; int main() { int num1; int num2; int result = 0; // 初始化变量避免垃圾值 char op; cout << "Enter one number: "; cin >> num1; cout << "Enter another number: "; cin >> num2; cout << "Enter how you want to calculate: "; cin >> op; if(op == '+') { result = num1 + num2; cout << result; } else if(op == '-') { result = num1 - num2; cout << result; } else if(op == '*') { result = num1 * num2; cout << result; } else if(op == '/') { if(num2 == 0) { cout << "Error: divisor cannot be zero"; } else { result = num1 / num2; cout << result; } } else { cout << "Invalid parameter "; } return 0; }
额外优化说明
如果需要支持小数运算,可以将num1、num2、result的类型从int改为float或double,除法运算会自动保留小数部分。
内容的提问来源于stack exchange,提问作者tannerco
相关产品推荐
相关产品推荐

