首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ if-语句的优先性

C++ if-语句的优先性
EN

Stack Overflow用户
提问于 2012-07-12 00:44:53
回答 2查看 127关注 0票数 0

可能重复: Is Short Circuit Evaluation guaranteed In C++ as it is in Java? How does C++ handle &&? (Short-circuit evaluation)

我有以下结构定义和特定用例:

代码语言:javascript
复制
struct foo
{
   bool boo;
};

int main()
{
  foo* f = 0;
   .
   .
   .
  if ((f) && (f->boo)) // <--- point of contention
   return 0
  else
   return 1;
}

标准是否保证上述if语句中的第一组大括号总是在第二组之前进行评估?

如果没有,那么什么是最好的,重写上面的代码呢?

目前,我有以下问题:

代码语言:javascript
复制
if (f)
{
   if (f->boo)
      return 0;
   else
      return 1;
}
else
   return 1;
EN

回答 2

Stack Overflow用户

发布于 2012-07-12 00:47:04

是的,这是有保证的--而且括号也是不必要的。

&&||都是短路操作符;它们计算左操作数,然后只在确定结果所需的情况下才计算右操作数。

票数 5
EN

Stack Overflow用户

发布于 2012-07-12 00:47:48

这可能是一个风格问题,但你可以说:

代码语言:javascript
复制
return (f && f->boo);

...or要稍微明确一点:

代码语言:javascript
复制
return ((f && f->boo) ? 1 : 0);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11443621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档