ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
項が三つある演算子のこと。多項演算子の一つであり、条件演算子である。
Cおよびその派生言語でよく見られる演算子である。
書式は次のとおりである。
<条件式> ? <真式> : <偽式>
条件式がtrueであれば真式、falseなら偽式が選択される。
C/C++では、三項演算子は条件演算子しかないため、条件演算子の別名として三項演算子と呼ばれることもある。この画期的な仕様が、後にの派生言語や派生スクリプト言語に広く継承されることになった。
書式は次のとおりである。
条件式 ? 真式 : 偽式
条件式がtrueであれば真式、falseなら偽式が選択される。
次のようなif文があったとする。
if ( a > b ) { c = d; } else { c = e; }
条件演算子を用いると、次のように書き換えることができる。
c = ( a > b ) ? d : e;
条件演算子は殆どの場合、右辺値として使用されるが、左辺値として使用する事も不可能ではない。但し、?:演算子は他の演算子と同様に値を産み出すが、値には代入できない。
つまり、以下は使用できないが
((condition) ? a : b) = c;
値からポインターを作る方法を用いれば、これも可能である。以下は使用できる。
*((condition) ? &a : &b) = c;
KotlinはJavaから派生したC/C++の系統言語ではあるが、三項演算子は無い。しかしKotlinの場合、ifは文ではなく式であり、それ自体が値を返す。そこで、Kotlinはif式でそれを代用することが可能である。
つまり上のサンプルで以下のようなものは、
c = ( a > b ) ? d : e;
Kotlinでは次のように書ける。
c = if ( a > b ) d else e
これが可能であるため、機能的に重複する三項演算子を言語仕様に含めなかったのだろうと予想される。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます