我有这样的情况
if(hour == TT_MB_HOUR && minutes >= 0 && minutes <= TT_MB_MINUTES_END){
return YES;
}但我见过有人这样写
if((hour == TT_MB_HOUR) && (minutes >= 0) && (minutes <= TT_MB_MINUTES_END)){
return YES;
}那么,怎样才是正确的呢?
发布于 2016-05-26 02:10:47
那么,怎样才是正确的呢?
他们两个都是。
与大多数编程语言一样,C使用运算符优先级来确定表达式中运算符的计算顺序。正如您所知道的那样,3 + 4 * 5在数学中的计算结果是23 (而不是35)。
逻辑运算符&&和||的优先级低于比较运算符,因此在它们之后执行。
如果在任何情况下都不清楚,那么一个很好的经验法则就是“当可能有疑问时,添加括号”来明确什么是隐式的(当然,如果您需要更改优先级,就像在(3 + 4) * 5中那样,它的计算结果是35)。您的代码的作者显然觉得括号使它更清楚,它们既不是对的也不是错的--这是一种意见。
C算子的哈沃德有一张漂亮的桌子优先。
HTH
发布于 2016-05-26 01:52:11
如果我看得对的话他们都会做同样的事。我会在每条线之后放一条线&,只是为了看清楚
if (hour == TT_MB_HOUR &&
minutes >= 0 &&
minutes <= TT_MB_MINUTES_END) {
return YES;
}发布于 2016-05-26 01:55:25
在上面的示例中对布尔语句进行分组不会影响结果,但是当您将&&和||语句组合在一起时就变得很重要了。
https://stackoverflow.com/questions/37450260
复制相似问题