The evaluation of `&&`

and `||`

expressions is complicated by the
fact that some subexpressions may not be evaluated at all.

In `&&`

expressions, the left-side operand is evaluated first: If the
value of the left-side operand is `0`

, the right-side operand is
ignored completely, and the value of the `&&`

expression is `0`

.

If both operands evaluate to some integer other than `0`

, the value of
the `&&`

expression is `1`

.

In `||`

expressions, the left-side operand also is evaluated first: If
the left-side operand evaluates to some integer other than `0`

, the
right-side operand is ignored completely, and the value of the `||`

expression is `1`

; if both operands evaluate to `0`

, the value of
the `||`

expression is `0`

.