C++ 中的三元條件運算子 (?:)


條件運算子 (? :) 是一個三元運算子(它接受三個運算元)。條件運算子的工作方式如下:

  • 第一個運算元隱式轉換為 bool 型別。它會被求值,並且所有副作用會在繼續執行之前完成。
  • 如果第一個運算元求值為真 (1),則求值第二個運算元。
  • 如果第一個運算元求值為假 (0),則求值第三個運算元。

條件運算子的結果是所求值運算元的結果——第二個或第三個。在一個條件表示式中,只有最後兩個運算元中的一個會被求值。條件運算子的求值非常複雜。上述步驟只是對其的快速介紹。條件表示式具有右結合性。第一個運算元必須是整型或指標型別。以下規則適用於第二個和第三個運算元:

  • 如果兩個運算元型別相同,則結果為該型別。
  • 如果兩個運算元是算術型別或列舉型別,則執行通常的算術轉換(在標準轉換中介紹)以將其轉換為公共型別。
  • 如果兩個運算元都是指標型別,或者一個是指標型別而另一個是求值為 0 的常量表達式,則執行指標轉換以將其轉換為公共型別。
  • 如果兩個運算元都是引用型別,則執行引用轉換以將其轉換為公共型別。
  • 如果兩個運算元都是 void 型別,則公共型別為 void 型別。
  • 如果兩個運算元都是相同的使用者定義型別,則公共型別為該型別。
  • 如果運算元的型別不同,並且至少一個運算元具有使用者定義型別,則使用語言規則來確定公共型別。(參見下面的警告。)

示例

#include <iostream>  
using namespace std;  

int main() {  
   int i = 1, j = 2;  
   cout << ( i > j ? i : j ) << " is greater." << endl;  
}

輸出

這將給出以下輸出:

2 is greater.

更新於:2020年2月11日

541 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告