Next: Shift Operations, Previous: Division and Remainder, Up: Arithmetic [Contents][Index]

There are two kinds of comparison operators: *equality* and
*ordering*. Equality comparisons test whether two expressions
have the same value. The result is a *truth value*: a number that
is 1 for “true” and 0 for “false.”

a == b /* Test for equal. */ a != b /* Test for not equal. */

The equality comparison is written `==`

because plain `=`

is the assignment operator.

Ordering comparisons test which operand is greater or less. Their results are truth values. These are the ordering comparisons of C:

a < b /* Test for less-than. */ a > b /* Test for greater-than. */ a <= b /* Test for less-than-or-equal. */ a >= b /* Test for greater-than-or-equal. */

For any integers `a`

and `b`

, exactly one of the comparisons
`a < b`

, `a == b`

and `a > b`

is true, just as in
mathematics. However, if `a`

and `b`

are special floating
point values (not ordinary numbers), all three can be false.
See Special Float Values, and Invalid Optimizations.