Node:Comparisons and logic, Next:Logical operators, Previous:More Special Assignments, Up:Expressions and operators
Comparisons and logic
Comparison operators tell you how numerical values relate to one
another, such as whether they are equal to one another, or whether one
is greater than the other. Comparison operators are used in logical
tests, such as if
statements. (See Decisions.)
The results of a logical comparison are always either true (1) or false (0). In computer programming jargon, true and false are the two Boolean values. Note that, unlike real life, there are no "gray areas" in C; just as in Aristotelian logic, a comparison operator will never produce a value other than true or false.
Six operators in C are used to make logical comparisons:
==
- is equal to
!=
- is not equal to
>
- is greater than
<
- is less than
>=
- is greater than or equal to
<=
- is less than or equal to
Important: Remember that many people confuse the equality operator
(==
) with the assignment operator (=
), and this is a major
source of bugs in C programs. (See Expressions and values, for more
information on the distinction between the ==
and =
operators.)
The operators above result in values, much as the addition operator
+
does. They produce Boolean values: true and false only.
Actually, C uses 1 for "true" and 0 for "false" when evaluating
expressions containing comparison operators, but it is easy to define
the strings TRUE
and FALSE
as macros, and they may well
already be defined in a library file you are using. (See Preprocessor directives, for information on defining macros.)
#define TRUE 1 #define FALSE 0
Note that although any non-zero value in C is treated as true,
you do not need to worry about a comparison evaluating to anything other
than 1 or 0. Try the following short program:
#include <stdio.h> int main () { int truth, falsehood; truth = (2 + 2 == 4); falsehood = (2 + 2 == 5); printf("truth is %d\n", truth); printf("falsehood is %d\n", falsehood); exit (0); }
You should receive the following result:
truth is 1 falsehood is 0