條件運算子: 嗎?:
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;
}