【问题标题】:Evaluation order of operands of logical operators such as &&&& 等逻辑运算符的操作数的求值顺序
【发布时间】:2014-08-18 06:35:36
【问题描述】:

我在想这样的情况:

if( A && B)
{
    doSomething();
}

考虑到我使用的是 C++,首先评估的是什么? AB ?

并且,假设首先评估A,如果Afalse,那么if 语句会在退出if 之前尝试评估B 吗?

与大多数其他编程语言一样吗?

【问题讨论】:

  • 在其他一些编程语言中的行为是相同的。但是要找出哪个,您需要调查这些单独的语言。另请注意,在 C++ 中,答案取决于 && 是否具有 bool 操作数的内置含义(最常见),还是实际上调用了 operator&& 函数。

标签: c++ if-statement operators logical-operators


【解决方案1】:

&&|| 通常实现为短路运算符。如果Afalse,则不需要评估B,并且(在大多数语言中)也不需要。因此,A 将首先被评估,根据其值,B 可能会或可能不会被评估。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2023-04-07
    • 1970-01-01
    • 2019-10-29
    • 2011-11-03
    相关资源
    最近更新 更多