条件演算子
C言語などには、次の構文の三項の条件演算子がある。
3項を結ぶ必要上、「?」と「:」の2つの記号を使うが、演算子としては1つの演算子である。
<条件式>は真 (true) または偽 (false) の論理値を返す論理式 (ブール型) である(あるいは論理値に暗黙に型変換可能な型を返す)。真式と偽式は同じ型の値を返さなければならない(暗黙に型変換可能なら許されることもある)。
この構文自身も式であるので値をもち、その値は上記<真式>または<偽式>の値のいずれかである。<条件式>が真の場合は<真式>、偽の場合は<偽式>の値となる。
例えば、Java言語では、次のように用いる。
この場合、変数weightの値が100以下であれば変数messageに"OK"という文字列が代入され、それ以外であれば"積載量オーバー"という文字列が代入される。これは通常のif-else文を用いて書いた次の例と同じ意味であり、コンパイルした結果はしばしば同じものとなる。
条件演算子はこの例のように、条件によって異なる値をある処理(上の例ではmessageへの代入)に適用する、という場合に記述を簡潔にすることができる。
C言語およびC++では、変数宣言時の初期化に条件演算子を用いることで、再代入を許可しないconst修飾された変数を定義することができるようになる。さらにC++においては、if-else文による初期化では必要な、変数宣言時のデフォルトコンストラクタが不要となる。