how if condition works with multiple expression

if-statement, objective-c

Solution

In most languages, including Objective C, || and && are short-circuit operators. As soon as no more of the arguments to those operators need to be checked, they are not. So if expression1 is true, the whole expression:

if (expression1 || expression2)

evaluates to true for sure as:

`if(true OR X)`

is by definition true, and X's value therefore does not need to be checked. This short-circuiting behavior clearly depends on the first variable's value. If we have:

`if(false || X)`

we will have to check X's value to evaluate the whole expression. Similarly, if we have:

`if(true && X)`

we need to check X's value before we can decide whether the expression evaluates to true. However, if we have:

`if(false && X)`

we know that the whole expression will be false anyway, so X does not need to be checked - and in many languages, it won't be.

The above points are true even if X is a compound statement that itself consists of more than one variable. So in:

if (true || (expression2 || expression3))

the `(expression2 || expression3)` part does not need to be evaluated, as the whole statement will still be true regardless of what expression2 and expression3 evaluate to.

Problem

My "if condition" look like below , ``` if (expression1 || expression2) { // do something } else { // do something } ``` My question is, if expression1 get satisfied, then code flow goes to else part or expression2 get checked and then goes to else part.

Original source