【问题标题】:Does an IF-Statement checks every OR operator?IF 语句是否检查每个 OR 运算符?
【发布时间】:2015-09-29 13:23:35
【问题描述】:

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

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

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

}

哪个更快?

【问题讨论】:

  • 两者不等价。因此,您不能说哪个更快。但是,当您从条件开始时,第一个非常快,这很可能是正确的,因为不会执行后续条件。 (对于 && 则相反。那么第一个应该是最有可能为假的那个)

标签: c++ performance if-statement


【解决方案1】:

C++ 使用所谓的 short-circuit 表达式求值,这意味着一旦遇到决定表达式最终结果的项,(不管剩余项可能求值to,) 它将停止评估术语。

由于 TRUE OR XTRUE 而不管 X 的值是多少,C++ 不会费心评估 X。

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

【讨论】:

    【解决方案2】:

    这可能以前在其他地方已经回答过了,但是 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
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 1970-01-01
      • 2011-01-10
      • 2021-06-28
      • 2021-06-20
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      相关资源
      最近更新 更多