In this post, we will see Short Circuit Evaluation | PPL | Sebesta | Expressions and Assignment Statements | short circuit evaluation, ppl, sebesta, expressions and assignment statements
5. Short Circuit Evaluation
A short-circuit evaluation of an expression is one in which the result is determined without evaluating all of the operands and/or operators.
For example, the value of the arithmetic expression
(13 * a) * (b / 13 - 1)
is independent of the value of (b / 13 - 1) if a is 0 , because 0 * x = 0 for any x . So, when a is 0 , there is no need to evaluate (b / 13 - 1) or perform the second multiplication. However, in arithmetic expressions, this shortcut is not easily detected during execution, so it is never taken.
The value of the Boolean expression
(a >= 0) && (b < 10)
is independent of the second relational expression if a < 0 , because the expression ( FALSE && ( b < 10 )) is FALSE for all values of b .
A language that provides short-circuit evaluations of Boolean expressions and also has side effects in expressions allows subtle errors to occur. Suppose that short-circuit evaluation is used on an expression and part of the expression that contains a side effect is not evaluated; then the side effect will occur only in complete evaluations of the whole expression. If program correctness depends on the side effect, short-circuit evaluation can result in a serious error.
For example, consider the Java expression
(a > b) || ((b++) / 3)
In this expression, b is changed (in the second arithmetic expression) only when a <= b . If the programmer assumed b would be changed every time this expression is evaluated during execution (and the program’s correctness depends on it), the program will fail.
In the C-based languages, the usual AND and OR operators, && and || , respectively, are short-circuit.
Ada allows the programmer to specify short-circuit evaluation of the Boolean operators AND and OR by using the two-word operators and then and or else . Ada also has non–short-circuit operators, and and or .
Watch following video:
Watch on YouTube: https://www.youtube.com/watch?v=jOWQ4X4b9oQ