### 8.2 Logical Operators and Comparisons ¶

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 using `r` as a truth value tests whether it is nonzero. But `r`’s meaning as an expression is not a truth value—it is a number to divide by. So it is clearer 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, as well as the need to write parentheses around its operand.