Relational operators check if a specific relation between two operands is true. The result is evaluated to 1 (which means true) or 0 (which means false). This result is often used to affect control flow (via if
, while
, for
), but can also be stored in variables.
Checks whether the supplied operands are equal.
1 == 0; /* evaluates to 0. */
1 == 1; /* evaluates to 1. */
int x = 5;
int y = 5;
int *xptr = &x, *yptr = &y;
xptr == yptr; /* evaluates to 0, the operands hold different location addresses. */
*xptr == *yptr; /* evaluates to 1, the operands point at locations that hold the same value. */
Attention: This operator should not be confused with the assignment operator (=
)!
Checks whether the supplied operands are not equal.
1 != 0; /* evaluates to 1. */
1 != 1; /* evaluates to 0. */
int x = 5;
int y = 5;
int *xptr = &x, *yptr = &y;
xptr != yptr; /* evaluates to 1, the operands hold different location addresses. */
*xptr != *yptr; /* evaluates to 0, the operands point at locations that hold the same value. */
This operator effectively returns the opposite result to that of the equals (==
) operator.
Check whether an object is equal to 0
.
The !
can also be used directly with a variable as follows:
!someVal
This has the same effect as:
someVal == 0
Checks whether the left hand operand has a greater value than the right hand operand
5 > 4 /* evaluates to 1. */
4 > 5 /* evaluates to 0. */
4 > 4 /* evaluates to 0. */
Checks whether the left hand operand has a smaller value than the right hand operand
5 < 4 /* evaluates to 0. */
4 < 5 /* evaluates to 1. */
4 < 4 /* evaluates to 0. */
Checks whether the left hand operand has a greater or equal value to the right operand.
5 >= 4 /* evaluates to 1. */
4 >= 5 /* evaluates to 0. */
4 >= 4 /* evaluates to 1. */
Checks whether the left hand operand has a smaller or equal value to the right operand.
5 <= 4 /* evaluates to 0. */
4 <= 5 /* evaluates to 1. */
4 <= 4 /* evaluates to 1. */