Equality and inequality operators == !=
The equality operators, like the relational operators, compare two operands for the validity of a relationship. The equality operators, however, have a lower precedence than the relational operators. The following table describes the two equality operators:
Operator | Usage |
---|---|
== | Indicates whether the value of the left operand is equal to the value of the right operand. |
!= | Indicates whether the value of the left operand is not equal to the value of the right operand. |
Both operands must have arithmetic or enumeration types or be pointers to the same type, or one operand must have a pointer type and the other operand must be a pointer to void or a null pointer.
The type of the result is int
and has the
values 1
if the specified relationship is true, and 0
if
false. The type of the result
is bool
and has the values true
or false
.
The type of the result is bool
and
has the values true
or false
.
If the operands have arithmetic types, the usual arithmetic conversions on the operands are performed.
If the operands are pointers, the result is determined by the locations of the objects to which the pointers refer.
If one operand is a pointer and the other operand is an
integer having the value 0
, the ==
expression
is true only if the pointer operand evaluates to NULL
.
The !=
operator evaluates to true if the pointer
operand does not
evaluate to NULL
.
time < max_time == status < complete
letter != EOF
==
) should
not be confused with the assignment (=
) operator.if (x == 3)
- evaluates to
true
(or1
) ifx
is equal to three. Equality tests like this should be coded with spaces between the operator and the operands to prevent unintentional assignments.while
if (x = 3)
- is taken to be true because
(x = 3)
evaluates to a nonzero value (3). The expression also assigns the value 3 to x.