Expressions And Operators: Logical Inclusive OR
The binary operator
|| determines the truth of an expression involving two operands. For example:
if ($month < 1 || $month > 12) ...
Here, the left-hand operand,
$month < 1, is evaluated first. If the result is
true, the right-hand operand,
$month > 12, is not evaluated,
and the result has type
true. Otherwise, the right-hand operand is evaluated, and if it has the value
false, the result has
false; otherwise, the result has type
Consider the following:
if ($month > 6 || get_value(--$count) < 50) ...
$month is not greater than 6 is
$count decremented and function
get_value called. That is, there is a sequence point
after the evaluation of the left-hand operand. Consider the following:
if ($x++ + do_it() < 15 || $values[$x] > 10) ...
Because of the sequence point, we know that if the left-hand operand tests
false, and we're evaluating the right-hand operand,
will already have been incremented and function
do_it will have been called.
If either operand does not have type
bool, its value is first converted to that type.