【问题标题】:AND/OR chains in CC中的AND/OR链
【发布时间】:2009-06-09 13:56:29
【问题描述】:

我对此非常积极,但为了安全起见:

C 标准是否保证 AND 链 (A && B && ...) 将从左到右进行评估,并且只要有 0,评估就会停止?

OR 的问题相同。 (只要有 1)

对于其他 C 风格的语言,我可以指望它吗?

这段代码安全吗:

if (somePtr!=NULL && somePtr->someMember==123)
{
     ...
}

【问题讨论】:

    标签: c expression-evaluation


    【解决方案1】:

    是的,它保证适用于 C、C++ 和 C#。启用“短期课程评估”的 Delphi 也是如此。

    这是目前许多行代码所依赖的行为。

    【讨论】:

    • 谢谢大家。只能检查一个答案:P
    【解决方案2】:

    是的,它是由 C 和 C++ 标准化的。

    【讨论】:

      【解决方案3】:

      是的,您对 C 中操作顺序的假设是正确的,并且代码 sn-p 将按预期工作。我会根据具体情况采用其他“C 风格”语言。

      【讨论】:

        【解决方案4】:

        是的。

        我看到有人认为这不清楚,并将 && 替换为这种形式:

        if (a)
        if (b)
        if (c)
        if (d) {
        }
        

        我个人认为这有点丑。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-10
          • 2013-07-09
          • 2022-10-20
          • 1970-01-01
          • 2010-11-14
          相关资源
          最近更新 更多