等価 == !=

等価演算子は、関係演算子と同様に、リレーションシップの妥当性について 2 つの オペランドを比較します。ただし、等価演算子には、関係演算子よりも低い優先順位が付けられます。

C 結果の型は int で、指定された関係が true であれば値 1 を持ち、 false であれば 0 を持ちます。

C++結果の型は bool で、値 true または false を持ちます。

次の表で、2 つの等価演算子を説明します。

演算子 使用法
== 左方オペランドの値が、右方オペランドの値と等価かどうかを示します。
!= 左方オペランドの値が、右方オペランドの値と等価でないかどうかを示します。

オペランドは両方とも算術型または列挙型を保持するか、同じ型を指すポインターである必要があります。 あるいは、一方のオペランドがポインター型を保持し、もう一方のオペランドが void を指すポインターまたはヌル・ポインターである必要があります。 結果は、C では型 int、C++ では bool です。

オペランドが算術型のときは、オペランドに通常の算術変換を実行します。

オペランドがポインターの場合は、ポインターが参照するオブジェクトのロケーションに よって結果が決まります。

一方のオペランドがポインターで、もう一方のオペランドが値 0 の整数の場合、 == 式は、ポインターのオペランドが NULL に 評価される場合にだけ true になります。!= 演算子は、ポインター・オペランド が NULL に評価されない 場合に、true になります。

等価演算子を使用して、型が同じでも、同じオブジェクトに属さないメンバーを指す ポインターを比較することもできます。次の式には、等価演算子と関係演算子の例が含まれています。

time < max_time == status < complete
letter != EOF
注:
等価演算子 (==) を、代入 (=) 演算子と混同しないでください。

例えば、次のような場合です。

 if (x == 3) 
x が 3 の場合 true (または 1) になります。 このような等価テストでは、意図しない代入を防ぐために、演算子とオペランドの間にスペースを入れてコーディングする必要があります。

一方、

 if (x = 3) 
(x = 3) がゼロ以外の値 (3) になるので、true になります。また、この式では、3 が x に代入されます。

関連参照

IBM Copyright 2003