如果条件有多个OR子句

时间:2017-02-10 13:01:02

标签: if-statement or-condition

让我们说我有一个if条件,它检查事件a,b,c,...中的一个是真的如图所示:

if(a || b || c || .... || z)
    do something

我的问题是,让我们说条件c证明是真的。然后程序会评估条件d到z还是继续执行“做某事”指令?

3 个答案:

答案 0 :(得分:0)

使用||将从左到右评估每个条件,直到它达到一个真实的值。然后它会停止检查。

if(a || b || c || .... || z)

如果使用|,则无论结果如何,都将评估每个条件。

if(a | b | c | .... | z)

答案 1 :(得分:0)

假设我们有int a = b = c = 1 如果我执行++a || ++b;a将在语句之后为2,因为OR子句只需要其中一个条件需要为真且b将保持为1,因为编译器不会因为表达式已经存在,所以继续检查它 但是,如果我们有--a || ++ba的计算结果为0,就逻辑而言将为false。所以它继续检查其他条件:b将是2,这在逻辑上是正确的 那么你需要记住什么?

  • 编译器从左到右评估这些条件
  • 如果其中一个OR条件为真,则编译器甚至不会继续评估其他条件,无论其他条件是真还是假,它都是真的
  • AND条件需要两个条件都为真,所以如果第一个条件为假,则整个表达式保证为假,因此编译器不会继续评估其他条件。但是,如果第一个是真的,编译器必须检查其他条件是否为真。

这一切都叫做

  

短路评估

如需更多信息,请点击here.

答案 2 :(得分:0)

这称为短路评估。 例如,java从左到右检查它;意味着如果c为真,则不会检查该部分的其余部分。

但并非所有语言都适用。 例如,csh从右到左执行短路评估。