C++中的三元運算子(? X : Y)是什麼?


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

  • 第一個運算元隱式轉換為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年6月18日

227 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.