條件運算符要求第二、三操作數為表達式,不能是語句塊({...})。
(grade < 0 || grade > 100) ? {
cout << "不合法"; return -1;
} : (grade < 60) ? result = vec[0] : { ... }; // 編譯錯誤
int getResult(string &res, int grade) {
if (grade % 10 <= 3 && grade % 10 > 0) res += '-';
else if (grade % 10 >= 7) res += '+';
return 0;
}
int main() {
string vec[] = {"E","D","C","B","A","A++"};
int grade; string result;
cin >> grade;
int flag = (grade < 0 || grade > 100) ?
(cout << "不合法" << endl, -1) :
(grade < 60) ? (result = vec[0], 0) : (result = vec[(grade-50)/10], getResult(result, grade), 0);
if (flag == -1) return -1;
cout << result << endl;
}
逗號表達式 (expr1, expr2) 依次執行並返回最後一個值,使多語句成為單一表達式。但強烈建議改用 if-else 提高可讀性。