差分
三項演算子
,'''三項演算子'''(ternary operator)とは、[[C言語]]などの一部の[[プログラミング言語]]に採用されている以下のような[[条件演算子]]のひとつである。
<条件式> ? <真式> : <偽式>
3項を結ぶ必要上、「?」と「:」の2つの記号を使うが、[[演算子]]としては1つの演算子である。
主に簡単な条件分岐を「簡潔明瞭に」一行で書きたいときに使われる。
<code><条件式></code>は真(true)または偽(false)の論理値を返す論理式(ブール型)である。C言語では他の条件式同様に「ゼロより大きいか」で判断と非常に緩い。一方でJavaやC#などではきっちりブール型でなければ通らないため、[[キャスト]]などを挟み[[可読性]]を落とすなど扱いを誤ると「簡潔明瞭」ではなくなる[[両刃の剣]]となる。
この構文自身も式であるので値をもち、その値は上記<code><真式></code>または<code><偽式></code>の値のいずれかである。<code><条件式></code>が真の場合は<code><真式></code>、偽の場合は<code><偽式></code>の値となる。
== 利点 ==
* 簡潔に書ける場合に限り簡潔明瞭
== 欠点 ==
* 少しでも複雑になるとカオス
* C#の[[null合体演算子]]や[[null条件演算子]]や、[[C++]]の[[エルビス演算子]]と非常に紛らわしい
== 関連項目 ==
* [[条件演算子]]
* [[三項演算子]]
* [[論理演算子]]
* [[Null条件演算子]]
<条件式> ? <真式> : <偽式>
3項を結ぶ必要上、「?」と「:」の2つの記号を使うが、[[演算子]]としては1つの演算子である。
主に簡単な条件分岐を「簡潔明瞭に」一行で書きたいときに使われる。
<code><条件式></code>は真(true)または偽(false)の論理値を返す論理式(ブール型)である。C言語では他の条件式同様に「ゼロより大きいか」で判断と非常に緩い。一方でJavaやC#などではきっちりブール型でなければ通らないため、[[キャスト]]などを挟み[[可読性]]を落とすなど扱いを誤ると「簡潔明瞭」ではなくなる[[両刃の剣]]となる。
この構文自身も式であるので値をもち、その値は上記<code><真式></code>または<code><偽式></code>の値のいずれかである。<code><条件式></code>が真の場合は<code><真式></code>、偽の場合は<code><偽式></code>の値となる。
== 利点 ==
* 簡潔に書ける場合に限り簡潔明瞭
== 欠点 ==
* 少しでも複雑になるとカオス
* C#の[[null合体演算子]]や[[null条件演算子]]や、[[C++]]の[[エルビス演算子]]と非常に紛らわしい
== 関連項目 ==
* [[条件演算子]]
* [[三項演算子]]
* [[論理演算子]]
* [[Null条件演算子]]