首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ 條件運算符 ?: 無法直接執行代碼塊的解決方案

     編輯:程式設計疑難解答

問題

條件運算符要求第二、三操作數為表達式,不能是語句塊({...})。

錯誤代碼

(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 提高可讀性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved