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
相关产品推荐
相关产品推荐

