エルビス演算子

エルビス演算子 () は、いくつかのプログラミング言語にある演算子で、字句構文は codice_1 である。三項条件演算子 (codice_2) と違い、この連続する2文字で1つの演算子であり、意味的には三項演算子の第二項 (codice_3のcodice_4) が無いもの、というような機能を持っている。
Null合体演算子に似た制御機能を持つが、第一項の扱いが異なる。ただし、エルビス演算子にNull合体演算子の意味と役割を持たせている言語もある。
例.
エルビス演算子を用いて以下のように記述すると、codice_5には左式codice_6の評価結果が真と判定される場合にはその結果が、それ以外の場合には右式codice_7の評価結果がセットされる。
 x = "exprL" ?: "exprR"
これは三項演算子を使って以下のように書くこともできる。
 x = "exprL" ? "exprL" : "exprR"
ただし、エルビス演算子ではcodice_6が真の場合でも、式が二度評価されることはない。すなわち、以下と同値である。
 x = "exprL"
 x = x ? x : "exprR"
名称.
エルビス演算子はエルビス・プレスリーの顔文字 (emoticon) に形が似ていることからこう呼ばれる。
短絡評価の論理和演算.
Perl、Python、JavaScriptなどでは論理和演算 (codice_16またはcodice_17) が同様の働きをする。すなわち第1項が真値あるいは真値とみなされる値である場合は第2項を評価せずに第1項が論理和式の評価値となり（短絡評価）、第1項が偽値あるいは偽値とみなされる値である場合は第2項が論理和式の評価値となる。
Common Lisp、Scheme では、codice_17特殊フォームがエルビス演算子に対応するが、エルビス演算子よりも汎用的であり、codice_17特殊フォームは任意個数の項を受け入れる。第1項から順に真値が見つかるまで項を評価してゆき、真値が見つかったらそれ以降の項の評価せずに、見つかった真値をcodice_17特殊フォームの評価値として評価を終える。