C++计算器程序报错:禁止比较操作问题咨询
错误原因与修复方案
核心错误分析
编译错误c++ forbids comparison的根源是类型不匹配:
- 你把存储运算符的变量
c声明为int类型,但实际要存储的是+/-/*//这类字符 - 代码中用
c == "+"比较,"+"是C风格字符串(const char*类型),和int类型无法直接比较,C++严格禁止这种跨类型的非法比较 - 同时,用
int接收字符输入会导致输入流异常,后续逻辑完全失效
修复步骤
- 修正变量类型:将
c的类型从int改为char,用于存储单个运算符字符 - 修正比较符号:把字符串字面量
"+"改为字符字面量'+'(单引号包裹单个字符) - 添加异常处理:补充除零判断,避免除法运算时崩溃;增加非法运算符的提示逻辑
修正后的完整代码
#include <iostream> using namespace std; int main() { int a, b; char op; // 改为char类型存储运算符 cin >> a >> b >> op; if(op == '+'){ cout << a + b << endl; } else if(op == '-'){ cout << a - b << endl; } else if(op == '*'){ cout << a * b << endl; } else if(op == '/'){ if(b == 0){ // 新增除零判断 cout << "Error: Division by zero is not allowed." << endl; } else { cout << a / b << endl; } } else { // 新增非法运算符提示 cout << "Error: Invalid operator. Use +, -, *, / only." << endl; } return 0; }
额外说明
- 输入时确保格式为
数字 数字 运算符(比如5 3 +),程序才能正确解析 - 如果需要支持
数字 运算符 数字(比如5 + 3)的输入格式,只需调整输入顺序为cin >> a >> op >> b即可
内容的提问来源于stack exchange,提问作者Sajid Rafik Sheikh
相关产品推荐
相关产品推荐

