IF语句是否检查每个OR运算符?

时间:2015-09-29 13:23:36

标签: c++ performance if-statement

目前我正在测试粒子并提出一个重要问题。

if (condition a || condition b || condition c)

if(condition a)
        if(condition b)
             if(condition c){

}

哪个更快?

2 个答案:

答案 0 :(得分:3)

C ++使用所谓的短路表达式评估,这意味着它一旦遇到决定表达式最终结果的术语,(无论剩下的术语可以评估什么到,)它将停止评估条款。

由于TRUE OR XTRUE,无论X的值如何,C ++都不会打扰评估X.

但是,您的级联if语句 等同于第一个表达式。它相当于具有多个AND而不是多个OR的表达式。

答案 1 :(得分:0)

这可能在之前的其他地方得到了回答,但是C ++使用了短路方法,也就是说,如果任何条件通过,其余的都会被忽略(在逻辑或:|的情况下)。

对于逻辑和&反之亦然 - 第一个失败的条件会使if语句短路并且它会提前退出。

以下是一个例子:

if (condition a || condition b || condition c) {
 // This code will execute if condition a is true, condition a or b is true, or if all three are true
}

if (condition a && condition b && condition c) {
 // This code will only execute if all three are true, but if a is false, it will exit early, the same can be said for b
}