Next: , Previous: , Up: Execution Control Expressions   [Contents][Index]

### 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 `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.