三項演算子 【ternary operator】
概要
三項演算子(ternary operator)とは、三つの項(被演算子)を用いて一つの結果を得る演算子。数学には様々な三項演算子があるが、プログラミングの分野では単に三項演算子といえば条件式の真偽に応じて二つの値のいずれか片方を返す「条件演算子」のことを指すことが多い。条件演算子は「X ? a : b」という書式の演算子で「条件Xが真ならaを、偽ならbを返す」という演算を行う。C言語やC++言語、Java、JavaScript、PHP、Perlなどでこの形式の条件演算子を利用することができる。Rubyではこの形式に加え、if式を用いて「if X then a else b end」と記述できる。Pythonでは「a if X else b」という構文を用いる。
条件文の「if X then a else b」と同じ操作を演算子の形で実装したものと考えることができるが、if文と異なり式であるため結果を変数に代入することができ、「r = s > 70 ? "合格" : "不合格"」のように閾値を境に代入値が切り替わる処理などを見通しよく簡潔に記述できる。
なお、「X ? ( Y ? ( Z ? a : b ) : c ) : d )」のように何段階も入れ子状にして複雑な分岐を記述することもできるが、コードの見通しが悪くなり、一見してどのような処理を行っているのかが分かりにくくなるためあまり推奨はされない。コーディング規約で三項演算子の使用を禁じる場合もある。
ほとんどのプログラミング言語では三項を取る演算子は存在しないか条件演算子のみであるため、「三項演算子」と「条件演算子」はほとんど同義語のように扱うこともあるが、Pythonの配列に対するスライス演算のように条件演算以外の三項演算が存在する言語もある。
一方、「a++」のように一つの項のみを用いて演算を行う演算子を「単項演算子」(unary operator)、「a+b」のように二つの項を用いて演算を行う演算子を「二項演算子」(binary operator)という。
(2024.2.9更新)