条件演算子

条件演算子とは



条件演算子は、プログラミング言語において、条件に応じて異なる値を返す式です。これは、`if-else`文のような条件分岐を、より簡潔に記述するための構文と言えます。

概要



条件演算子は、主に三項演算子として知られています。これは、条件式、式、偽式の3つのオペランドを取り、条件式の評価結果に応じて、式または偽式の値を返します。また、二項演算子として、条件式と式または偽式のいずれかを取るものもあります。

条件文との主な違いは以下の点です。

式・偽式は式であるため、文を置くことはできません。
式であるため、値を持ちます。

主な種類



C言語など


C言語C++などでは、`条件式 ? 式 : 偽式`という構文が用いられます。

条件式:[真]または偽(false)の論理値を返す式。
式:条件式がの場合に評価される式。
偽式:条件式が偽の場合に評価される式。

この演算子全体が式として評価され、式または偽式のいずれかの値を持ちます。

例えば、Javaでは以下のようになります。

java
String message = (weight <= 100) ? "OK" : "積載量オーバー";


これは、`weight`変数が100以下であれば`message`に"OK"が、そうでなければ"積載量オーバー"が代入されることを意味します。`if-else`文とほぼ同じ意味を持ちますが、より簡潔に記述できます。

演算子の結合性


条件演算子の結合性は言語によって異なります。CやJavaなどでは、`a ? b : c ? d : e`は`a ? b : (c ? d : e)`と解釈されますが、PHPでは`(a ? b : c) ? d : e`となるため注意が必要です。

Ruby


RubyでもCと同様に`条件式 ? 式 : 偽式`の形式で使用できます。ただし、Rubyでは`if`も式であるため、複雑な条件分岐の場合は`if`文を使う方が推奨されます。

Python


Pythonでは、条件式は`式 if 条件式 else 偽式`という順序で記述されます。

python
message = "OK" if weight <= 100 else "積載量オーバー"


Visual Basic


Visual Basic(2008より前)では、`IIf(条件式, 式, 偽式)`という関数を使用します。ただし、この関数は条件に関わらず式と偽式を両方評価するため、副作用に注意が必要です。Visual Basic 2008以降では、`If`演算子が導入され、短絡評価が可能になりました。

論理演算子短絡評価


短絡評価を持つ論理演算子`AND`と`OR`を組み合わせることで、条件演算子に似た処理を記述できます。例えば、`(cond AND expr1) OR expr2`とすることで、`cond`がなら`expr1`を評価し、偽なら`expr2`を評価します。ただし、論理演算子の結果はブール値となるため、値自体を利用することはできません。

条件演算子とif式


`if`が式である言語では、条件演算子の代わりに`if`式を使用できます。例えば、F#では条件演算子は組み込まれていませんが、`if`式で同様の処理を実現できます。

その他の方法



Smalltalkのように、無名関数を利用して条件分岐を表現する方法もあります。

関連する演算子



Null合体演算子: `A ?? B` (Aがnullの場合にBを返す)
エルビス演算子: `A ?: B` (Aがfalseの場合にBを返す)
Null条件演算子: `A?.B` (Aがnullの場合にnullを返す)

条件演算子は、コードをより簡潔にする便利なツールですが、可読性を損なわないように注意して使用する必要があります。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。