Next: Logicals and Assignments, Previous: Logical Operators, Up: Execution Control Expressions [Contents][Index]

The most common thing to use inside the logical operators is a
comparison. Conveniently, ‘`&&`’ and ‘`||`’ have lower
precedence than comparison operators and arithmetic operators, so we
can write expressions like this without parentheses and get the
nesting that is natural: two comparison operations that must both be
true.

if (r != 0 && x % r == 0)

This example also shows how it is useful that ‘`&&`’ guarantees to
skip the right operand if the left one turns out false. Because of
that, this code never tries to divide by zero.

This is equivalent:

if (r && x % r == 0)

A truth value is simply a number, so `r`

as a truth value tests whether it is nonzero.
But `r`

’s meaning is not a truth value—it is a number to divide by.
So it is better style to write the explicit `!= 0`

.

Here’s another equivalent way to write it:

if (!(r == 0) && x % r == 0)

This illustrates the unary ‘`!`’ operator, and the need to
write parentheses around its operand.