共用方式為


條件運算子: 嗎?:

expression ? expression : expression

備註

條件運算子 (? :) 是三元運算子 (它接受三個運算元)。 條件運算子如下所示:

  • 第一個運算元會隱含轉換成bool。 它會評估,並在繼續前先完成所有的副作用。

  • 如果第一個運算元等於 ,則為 true (1),會評估第二個運算元。

  • 如果第一個運算元等於 ,則為 false (0),會評估第三個運算元。

條件運算子的結果就是無論使用何種運算元會評估的結果,而第二個或第三個。 最後兩個運算元其中之一會評估條件運算式中。

條件運算式具有從右至左順序關聯性。 第一個運算元必須是整數或指標型別。 下列規則適用於第二個和第三個運算式:

  • 如果兩個運算式皆有相同的型別,結果會是該型別。

  • 如果兩個運算式的算術或列舉型別,一般的算數轉換 (請參閱本文的算數轉換) 將它們轉換為一般型別時所執行。

  • 如果兩個運算式是指標型別,或是如果其中一個是指標型別,而另一個是常數運算式會評估結果為 0,執行指標轉換,以將它們轉換為一般型別。

  • 如果兩個運算式的參考型別,參考轉換會執行,將它們轉換為一般型別。

  • 如果兩個運算式的型別 void,一般型別 is 型別 void。

  • 指定的類別型別的兩個運算式時,一般型別會是該類別型別。

不在上列清單中的第二個和第三個運算元的任何組合不正確。 結果的型別是常見的型別,而且是左值如果第二個和第三個運算元都位於相同的型別,並且兩者都是左值。

範例

// expre_Expressions_with_the_Conditional_Operator.cpp
// compile with: /EHsc
// Demonstrate conditional operator
#include <iostream>
using namespace std;
int main() {
   int i = 1, j = 2;
   cout << ( i > j ? i : j ) << " is greater." << endl;
}

請參閱

參考

C + + 運算子

運算子優先順序和順序關聯性

概念

條件運算運算子