You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++计算器程序报错:禁止比较操作问题咨询

错误原因与修复方案

核心错误分析

编译错误c++ forbids comparison的根源是类型不匹配:

  • 你把存储运算符的变量c声明为int类型,但实际要存储的是+/-/*//这类字符
  • 代码中用c == "+"比较,"+"是C风格字符串(const char*类型),和int类型无法直接比较,C++严格禁止这种跨类型的非法比较
  • 同时,用int接收字符输入会导致输入流异常,后续逻辑完全失效

修复步骤

  1. 修正变量类型:将c的类型从int改为char,用于存储单个运算符字符
  2. 修正比较符号:把字符串字面量"+"改为字符字面量'+'(单引号包裹单个字符)
  3. 添加异常处理:补充除零判断,避免除法运算时崩溃;增加非法运算符的提示逻辑

修正后的完整代码

#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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:45:35