演算子の一種で、2つの対象(オペランド)が等価であるかを調べるものです。
プログラミング言語によって異なりますが、等価であるかを調べる =
や ==
といった演算子と、等価でないことを調べる !=
や <>
といった演算子があります。前者のみを等価演算子と呼び、後者を不等価演算子などと呼び分ける場合もあります。また、大小関係を調べる演算子とともに、関係演算子の分類の中に収める場合も多いです。
「等価」であるとは、簡単にいえば「同じである」ということですが、「等値」というよく似た用語と区別をしなければならない場合があることに注意が必要です。オブジェクト指向プログラミング言語において、2つのオブジェクトが同一であることは等価といい、内容(値)が同じであることを等値といいます。たとえば2つの文字列型のオブジェクト s1 と s2 がともに “Hello” であったとすると、s1 と s2 は等値ですが等価ではありません。等価演算子は等価であることを調べるので、s1 == s2
は false になるでしょう。こういった言語では、等値の判定のためのメソッドを用意していることが多いです。
さらに、「同値」という表現をすることもありますが、これは名前に反するようですが「等価」のことをいっています。
等価演算子を用いた式の結果は、ブール値(真か偽の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で書く |
RSS | 管理者情報 | プライバシーポリシー |