可能重复: Is Short Circuit Evaluation guaranteed In C++ as it is in Java? How does C++ handle &&? (Short-circuit evaluation)
我有以下结构定义和特定用例:
struct foo
{
bool boo;
};
int main()
{
foo* f = 0;
.
.
.
if ((f) && (f->boo)) // <--- point of contention
return 0
else
return 1;
}标准是否保证上述if语句中的第一组大括号总是在第二组之前进行评估?
如果没有,那么什么是最好的,重写上面的代码呢?
目前,我有以下问题:
if (f)
{
if (f->boo)
return 0;
else
return 1;
}
else
return 1;发布于 2012-07-12 00:47:04
是的,这是有保证的--而且括号也是不必要的。
&&和||都是短路操作符;它们计算左操作数,然后只在确定结果所需的情况下才计算右操作数。
发布于 2012-07-12 00:47:48
这可能是一个风格问题,但你可以说:
return (f && f->boo);...or要稍微明确一点:
return ((f && f->boo) ? 1 : 0);https://stackoverflow.com/questions/11443621
复制相似问题