| Expression | Result | Evaluation Order |
|---|---|---|
true || true | true | only first operand evaluated |
false || true | true | both operands evaluated |
true || false | true | only first operand evaluated |
false || false | false | both operands evaluated |
true | true | true | both operands evaluated |
false | true | true | both operands evaluated |
true | false | true | both operands evaluated |
false | false | false | both operands evaluated |
Perhaps you noticed that to answer the question you only needed to evaluate the first subexpression:
12 > 6 || 18 > 1 ------ true
Once you know that this subexpression is true there is no need to
go further.
true OR anything is true.
The || OR operator is also
a short-circuit operator.
Since OR evaluates to true when one or both
of its operands are true,
short-circuit evaluation stops with the first true.
The OR operator comes in a non-short-circuit version as well: | (this is a single vertical bar.) When this operator is used, both operands are evaluated no matter what the outcome of the first operand. The short-circuit OR works like this:
To evaluateX||Y, first evaluate X. If X istruethen stop: the whole expression istrue. Otherwise evaluate Y and OR the two values.
As with the short-circuit AND, be careful when using methods that have side effects. If you are depending on a method's side effect, be sure that the method executes.