関係 < > <= >=

関係演算子は、2 つのオペランドを比較して、リレーションシップの妥当性を判別します。

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

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

結果は、左辺値ではありません。

次の表では、4 つの関係演算子を説明します。

演算子 使用法
< 左方オペランドの値が、右方オペランドの値より小さいかどうかを示します。
> 左方オペランドの値が、右方オペランドの値より大きいかどうかを示します。
<= 左方オペランドの値が、右方オペランドの値より小さいまたは等しいかどうかを示します。
>= 左方オペランドの値が、右方オペランドの値より大きいまたは等しいかどうかを示します。

オペランドは両方とも、算術型または列挙型を保持するか、同じ型を指すポインターでなければなりません。

C 結果は、int 型を持ちます。

C++結果は、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 の値と比較します (必要であれば、整数拡張が実行されます)。 IBM Copyright 2003