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.