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

C++代码编译报错main.cpp:16:60,求排查条件运算符使用错误

编译报错修复:expected ':' before 'O'

你的代码第16行的条件运算符表达式存在语法错误,问题出在grade'O'和grade'o'的写法上:

  • 你试图返回字符常量,但错误地将未赋值的grade变量与字符直接拼接,这不符合C++语法规则,编译器无法识别该写法,因此抛出expected ':' before 'O'的错误。
  • 此外,你定义的grade变量在这里完全多余,不需要通过它来返回字符值。

修复后的代码

#include <iostream>

using namespace std;

int main() {
    
   int num1{};
   
   cout << "Enter the mark you got:  ";
   cin >> num1;
   
   if(num1 >= 0 && num1 <= 100){
       cout << "Nice work!, you got "<< ((num1 >= 90) ? 'O' : 'o') << " grade!" << endl;
   }else{
       cout << "Value is out of range!" << endl;
   }
   return 0;
}

修改说明

把原代码中的((num1 >= 90)?grade'O':grade'o')替换为((num1 >= 90) ? 'O' : 'o'),直接在条件运算符的两个分支返回字符常量即可。如果确实需要用grade变量存储结果,也可以写成:

char grade = (num1 >= 90) ? 'O' : 'o';
cout << "Nice work!, you got "<< grade << " grade!" << endl;

内容的提问来源于stack exchange,提问作者Thasneem Mohamed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:12:23