目前我正在测试粒子并提出一个重要问题。
if (condition a || condition b || condition c)
或
if(condition a)
if(condition b)
if(condition c){
}
哪个更快?
答案 0 :(得分:3)
C ++使用所谓的短路表达式评估,这意味着它一旦遇到决定表达式最终结果的术语,(无论剩下的术语可以评估什么到,)它将停止评估条款。
由于TRUE OR X
是TRUE
,无论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
}