演算子の一種で、2つの対象(オペランド)が等しいかどうかを調べるものです。
プログラミング言語によって異なりますが、 =
や ==
で表されることが多いです。また、等しくないことを調べる !=
や <>
といった演算子もあり、これらを不等価演算子と呼んだり、すべてまとめて等価演算子と呼んだりします。また、大小関係を調べる演算子とともに、関係演算子の分類の中に収める場合もあります。
2つの対象が等しいかどうかには、等値と等価という2種類の考え方があります。等値は「2つの値が同じ」であること、等価は「2つの意味や内容が同じ」であることを指します。たとえば、文字列型の異なるオブジェクト s1 と s2 があり、いずれもその内容が "Hello"
であるとき、s1 と s2 は等価ですが等値ではありません。単純な整数型や文字型などでは、等値と等価は同じことです。
多くの言語で、等価演算子の標準的な動作はむしろ「等値」の比較になっています。そのため、等値演算子と訳すものもありますが、実際に等値であるか等価であるかによらず、等価演算子という訳語は一般的になっています。なお、演算子オーバーロードによって、等価の比較を実現できる言語もあります。
等価演算子を用いた式の結果は、ブール値(真か偽の2通り)になることが一般的ですが、ブール値を表現する専用の型がないプログラミング言語では、0
か 1
のような整数を使うといった手段で表現されます。等価演算子(や関係演算子)を含んだ式を条件式と呼び、条件分岐やループの終了(あるいは続行)の条件判定に登場します(if (a == 0)
とか while (a != b)
といったように)。
また、JavaScript や PHP などには、===
や !==
で表現される、厳密等価演算子(同値演算子)と呼ばれる亜種があります。これらの言語では、等価演算子は、型変換によってオペランドの型を合わせてから比較を行おうとしますが、この仕様がかなり分かりづらい結果を生むことがあるため、厳密等価演算子を優先して使うべきであるとされることがあります。
たとえば、4 == "4.0"
のような整数型と文字列型の比較が、4
と 4.0
という数値どうしの比較になり、true になるといった仕様があります。4 === "4.0"
とすれば、オペランドの型が一致していない時点で false と判定されます。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
![]() |
管理者情報 | プライバシーポリシー |