我对此非常积极,但为了安全起见:
C标准是否保证AND链(A && B && ...)将从左到右进行评估,并且只要有0,评估就会停止?
或同样的问题。(只要有1)
对于其他 C 风格的语言,我可以指望它吗?
这段代码安全吗:
if (somePtr!=NULL && somePtr->someMember==123)
{
...
}
我对此非常积极,但为了安全起见:
C标准是否保证AND链(A && B && ...)将从左到右进行评估,并且只要有0,评估就会停止?
或同样的问题。(只要有1)
对于其他 C 风格的语言,我可以指望它吗?
这段代码安全吗:
if (somePtr!=NULL && somePtr->someMember==123)
{
...
}
是的,它保证适用于 C、C++ 和 C#。启用“短电路评估”的德尔福也是如此。
这是许多行代码到现在所依赖的行为。
是的,它是由 C 和 C++ 标准化的。
是的,您对 C 中操作顺序的假设是正确的,并且代码片段将按预期工作。我会根据具体情况采用其他“C 风格”语言。
是的,它确实。
我见过一些认为不清楚的人,并用这种形式替换了 &&:
if (a)
if (b)
if (c)
if (d) {
}
个人觉得有点丑。