法大奥山研究室

 previous  contents

7.9. 条件演算子 ? :


 C言語には B言語から引き継いだ「省力化」「簡略化」があります。増分演算子 x++ や複合代入演算子 x += y などもそうですが,if文を書かなくとも条件判断する「条件演算子」も又そうです。

■条件演算子(Conditional Operator)

式1 ? 式2 : 式3

式10 でない(真である)場合には,式2 を返し,0(偽)のときには 式3 を返します。後に学ぶ if文を使うと,

if(式1) {
     式2
} else {
     式3
}

を実行し,値を返していることになります。典型的な例は,2つの変数の最大値を求めるものです。

x > y ? x : y

第1オペランドは算術型でなければなりませんが,第2,第3オペランドについては双方が算術型のときだけでなく,双方が同じ構造体型でも許されます。(第2,第3オペランドについては,C99, 6.5.15 を参照のこと。)双方が算術型の場合には,通常の算術型変換によって式の値(右辺値)の型が決まります。


 previous  contents