メインメニューを開く

差分

三項演算子

1,537 バイト追加, 2019年1月7日 (月) 04:47
ページの作成:「'''三項演算子'''(ternary operator)とは、C言語などの一部のプログラミング言語に採用されている以下のような条件演算…」
'''三項演算子'''(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条件演算子]]
匿名利用者