首页
学习
活动
专区
圈层
工具
发布

目标
EN

Stack Overflow用户
提问于 2016-05-26 01:46:43
回答 3查看 284关注 0票数 0

我有这样的情况

代码语言:javascript
复制
if(hour == TT_MB_HOUR && minutes >= 0 && minutes <= TT_MB_MINUTES_END){
    return YES;
}

但我见过有人这样写

代码语言:javascript
复制
if((hour == TT_MB_HOUR) && (minutes >= 0) && (minutes <= TT_MB_MINUTES_END)){
    return YES;
}

那么,怎样才是正确的呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-26 02:10:47

那么,怎样才是正确的呢?

他们两个都是。

与大多数编程语言一样,C使用运算符优先级来确定表达式中运算符的计算顺序。正如您所知道的那样,3 + 4 * 5在数学中的计算结果是23 (而不是35)。

逻辑运算符&&||的优先级低于比较运算符,因此在它们之后执行。

如果在任何情况下都不清楚,那么一个很好的经验法则就是“当可能有疑问时,添加括号”来明确什么是隐式的(当然,如果您需要更改优先级,就像在(3 + 4) * 5中那样,它的计算结果是35)。您的代码的作者显然觉得括号使它更清楚,它们既不是对的也不是错的--这是一种意见。

C算子的哈沃德有一张漂亮的桌子优先。

HTH

票数 3
EN

Stack Overflow用户

发布于 2016-05-26 01:52:11

如果我看得对的话他们都会做同样的事。我会在每条线之后放一条线&,只是为了看清楚

代码语言:javascript
复制
if (hour == TT_MB_HOUR &&
    minutes >= 0 && 
    minutes <= TT_MB_MINUTES_END) {
       return YES;
}
票数 4
EN

Stack Overflow用户

发布于 2016-05-26 01:55:25

在上面的示例中对布尔语句进行分组不会影响结果,但是当您将&&||语句组合在一起时就变得很重要了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37450260

复制
相关文章

相似问题

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