関係演算子は、2 つのオペランドを比較して、リレーションシップの妥当性を判別します。
結果の型は int で、指定された関係が true であれば値 1 を持ち、
false であれば 0 を持ちます。
結果の型は bool で、値 true または false を持ちます。
結果は、左辺値ではありません。
次の表では、4 つの関係演算子を説明します。
演算子 | 使用法 |
---|---|
< | 左方オペランドの値が、右方オペランドの値より小さいかどうかを示します。 |
> | 左方オペランドの値が、右方オペランドの値より大きいかどうかを示します。 |
<= | 左方オペランドの値が、右方オペランドの値より小さいまたは等しいかどうかを示します。 |
>= | 左方オペランドの値が、右方オペランドの値より大きいまたは等しいかどうかを示します。 |
オペランドは両方とも、算術型または列挙型を保持するか、同じ型を指すポインターでなければなりません。
結果は、int 型を持ちます。
結果は、bool 型を持ちます。
オペランドが算術型のときは、オペランドに通常の算術変換を実行します。
オペランドがポインターの場合は、ポインターが参照するオブジェクトのロケーションに よって結果が決まります。ポインターが同じ配列のオブジェクトを参照しない場合は、 結果は未定義になります。
ポインターは、0 に評価される定数式と比較することができます。 また、ポインターを void* 型のポインターと比較することもできます。 ポインターを void* 型のポインターに変換します。
2 つのポインターが同じオブジェクトを参照する場合は、この 2 つのポインターは等しいと見なされます。 2 つのポインターが同一オブジェクトの非静的メンバーを参照する場合、 これらのポインターがアクセス指定子によって分離されていなければ、 後で宣言されるオブジェクトを指すポインターの方がより大きいです。 分離されていれば、比較は未定義です。 2 つの ポインターが同じ共用体のデータ・メンバーを参照する場合は、この 2 つのポインターは同じアドレス値を保持します。
2 つのポインターが同じ配列のエレメント、または配列の最後のエレメントを超えて最初のエレ メントを参照する場合、より大きい添え字値を持っているエレメントを指すポインターの方が、よ り大きいです。
関係演算子では、同じオブジェクトのメンバーだけを比較できます。
関係演算子には、左から右の結合順序が指定されます。例えば、次の式
a < b <= c
は、次のように解釈されます。
(a < b) <= c
a の値が b の値よりも小さい場合は、最初の関係演算は、C では
1 を、C++ では
true を生成します。その後で、コンパイラーは、値 true (または 1) を c の値と比較します (必要であれば、整数拡張が実行されます)。