Relational operators < > <= >=
关系运算符比较两个操作数并确定关系的有效性。 下表描述了四个关系运算符:
| 运算符 | 使用量 |
|---|---|
| < | 指示左操作数的值是否小于右操作数的值。 |
| > | 指示左操作数的值是否大于右操作数的值。 |
| <= | 指示左操作数的值是否小于或等于右操作数的值。 |
| >= | 指示左操作数的值是否大于或等于右操作数的值。 |
两个操作数都必须具有算术或枚举类型,或者都是指向相同类型的指针。
结果类型为 ,如果指定的关系为真,则值为 ,如果为假,则值为。 int 1 0 
结果类型为 bool ,值为 true 或 false。 
结果不是 lvalue。
如果操作数具有算术类型,那么将对操作数执行通常的算术转换。
当操作数是指针时,结果由指针所引用的对象的位置确定。 如果指针未引用同一数组中的对象,那么不会定义结果。
可以将指针与求值为 0 的常量表达式进行比较。 您还可以将指针与类型为 void*的指针进行比较。 该指针将转换为类型为 void*的指针。
如果两个指针引用同一对象,那么它们被视为相等。 如果两个指针引用同一对象的非静态成员,那么以后声明的对象的指针更大,前提是它们没有被访问说明符分隔; 否则比较是未定义的。 如果两个指针引用同一联合的数据成员,那么它们具有相同的地址值。
如果两个指针引用同一数组的元素,或者引用数组的最后一个元素之外的第一个元素,那么指向下标值较高的元素的指针较大。
只能将同一对象的成员与关系运算符进行比较。
关系运算符具有从左到右的关联性。 例如,表达式:
a < b <= c被解释为:
(a < b) <= c如果 a 的值小于 b的值,那么第一个关系在 C 中生成 1 ,在 C++ 中生成 true。 然后,编译器将值 true (或 1) 与 c 的值进行比较 (如果需要,将执行积分提升)。