如果条件适用于多个表达式

时间:2014-01-06 11:05:55

标签: objective-c if-statement

我的“if condition”如下所示,

if (expression1 || expression2) {
    // do something
} else {
   // do something
}

我的问题是,如果expression1得到满足,那么代码流将转到else part或expression2得到检查,然后转到else部分。

4 个答案:

答案 0 :(得分:6)

在大多数语言中,包括Objective C, ||和&&是短路运营商只要不再需要检查这些运算符的参数,它们就不是。因此,如果expression1为true,则整个表达式为:

if (expression1 || expression2)

肯定评估为:

if(true OR X)

根据定义为true,因此不需要检查X的值。这种短路行为显然取决于第一个变量的值。如果我们有:

if(false || X)

我们必须检查X的值来评估整个表达式。同样,如果我们有:

if(true && X)

我们需要检查X的值,然后才能决定表达式是否计算为true。但是,如果我们有:

if(false && X)

我们知道整个表达式无论如何都是假的,因此不需要检查X - 在许多语言中,它不会被检查。

即使X是一个复合语句本身由多个变量组成,上述观点也是正确的。所以在:

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

(expression2 || expression3)部分不需要进行评估,因为无论expression2和expression3如何评估,整个语句仍然为真。

答案 1 :(得分:1)

如果将expression1评估为true,则根本不评估expression2,因为无论评估true,if表达式都为expression2

如果将expression1评估为false,则评估expression2。如果expression2评估为false,那么if会转到else语句

你可以这样想:

if (expression1){
//execute_block_1
} else if(expression2){
//execute_block_1
}else{
//execute_block_2
}

答案 2 :(得分:0)

$a || $b   gives  TRUE if either $a or $b is TRUE.

答案 3 :(得分:0)

|| OR 的标志,如果任何一个变量具有 true 值,则返回 true

if(expression1 || expression 2)

这意味着如果一个变量expression1或expression2返回 true 值,那么整个条件将返回 true 值。

&& AND 的标志,如果任何一个变量的 false 值,则返回 false

if(expression1 && expression 2)

这意味着如果一个变量expression1或expression2返回 false 值,那么整个条件将返回 false 值。在这种情况下,如果两个变量都是 true 然后,如果条件返回 true