我对此非常积极,但为了安全起见:
C标准是否保证AND链(A& B&& ...)从左到右进行评估,一旦有0,评估就会停止?
OR的相同问题。 (只要有1)
我可以依靠其他C风格的语言吗?
这段代码是否安全:
if (somePtr!=NULL && somePtr->someMember==123)
{
...
}
答案 0 :(得分:10)
是的,保证C,C ++和C#。对于启用了“短流量评估”的Delphi也是如此。
这是许多代码行依赖的行为。
答案 1 :(得分:3)
是的,它由C和C ++标准化。
答案 2 :(得分:0)
是的,您对C中操作顺序的假设是正确的,并且代码段将按预期工作。我会根据具体情况采用其他“C风格”语言。
答案 3 :(得分:0)
是的。
我见过那些认为不清楚的人,并用这种形式取代了&&&s ;:
if (a)
if (b)
if (c)
if (d) {
}
我个人认为这有点难看。