條件運算運算子
有一個三元運算子,C: 條件運算運算子 (? :).
語法
條件式運算式:
邏輯 OR 運算式邏輯 OR 運算式**?** 運算式**:** 條件式運算式
邏輯 OR 運算式必須有整數、 為浮動狀態,或指標型別。 它會評估為 0,其等價的角度來看。 序列點遵循邏輯 OR 運算式。 運算元的評估結果如下所示:
如果邏輯 OR 運算式 不等於 0, 運算式的評估。 評估運算式的結果由所提供的終端運算式。 (這表示運算式 時,才會評估 邏輯 OR 運算式為真。)
如果邏輯 OR 運算式 等於 0, 條件式運算式的評估。 運算式的結果為值條件式運算式。 (這表示條件式運算式 時,才會評估 邏輯 OR 運算式為 false。)
請注意,可能是運算式 或 條件式運算式是經過評估,而非全部。
條件運算的結果的型別而定的型別運算式 或 條件式運算式運算元,如下所示:
如果運算式 或 條件式運算式有整數或浮型別 (其型別可以從不同),此運算子會執行一般的算數轉換。 結果的型別是在轉換後的運算元型別。
若兩個運算式 和 條件式運算式有相同的結構、 等位或指標型別,結果型別是相同的結構、 等位或指標型別。
如果兩個運算元具有型別void,結果將會有型別void。
如果其中一個運算元是任何類型的物件指標和另一個運算元是變數的指標, void,物件的指標會轉換為變數的指標, void ,而結果則是指向void。
如果其中一個運算式 或 條件式運算式是一個指標,和另一個運算元是常數運算式的值 0,結果的型別是指標型別。
在為指標型別比較中,任何型別限定詞 (const 或volatile) 的指標點不重要,但結果型別會繼承這兩個元件的條件中的限定詞型別中。
範例
下列範例顯示條件運算子的用法:
j = ( i < 0 ) ? ( -i ) : ( i );
本範例將指定數值的絕對值i到j。 如果i小於 0, -i係授與j。 如果i大於或等於 0, i係授與j。
void f1( void );
void f2( void );
int x;
int y;
.
.
.
( x == y ) ? ( f1() ) : ( f2() );
在這個範例中,兩個函式, f1和f2,和兩個變數, x和y,宣告。 稍後在程式中,如果兩個變數擁有相同的值,此函式f1呼叫。 否則, f2呼叫。