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日

542 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.