Given that a and b represent numeric expressions, the relational (also called comparison) operators are defined as shown in Table 3.6.
a < b | a less than b? |
a <= b | a less than or equal to b? |
a > b | a greater than b? |
a >= b | a greater than or equal to b? |
All relational operators are binary operators, and their operands are numeric expressions. Binary numeric promotion is applied to the operands of these operators. The evaluation results in a boolean value. Relational operators have precedence lower than arithmetic operators, but higher than that of the assignment operators.
double hours = 45.5; boolean overtime = hours >= 35.0; // true. boolean order = 'A' < 'a'; // true. Binary numeric promotion applied.
Relational operators are nonassociative. Mathematical expressions like a ≤ b ≤ c must be written using relational and boolean logical/conditional operators.
int a = 1, b = 7, c = 10; boolean valid1 = a <= b <= c; // (1) Illegal. boolean valid2 = a <= b && b <= c; // (2) OK.
Since relational operators have left associativity, the evaluation of the expression a <= b <= c at (1) in the examples above would proceed as follows: ((a <= b) <= c). Evaluation of (a <= b) would yield a boolean value that is not permitted as an operand of a relational operator, that is, (<boolean value> <= c) would be illegal.