编程语言及工具
通常情况下,像>,<和==这类的比较运算符的优先级要低于计算运算符。所以下面的两段代码是一样的:
代码1:
if (a > b + c) { //… }
代码2:
if (a > (b + c)) { //… }
但是,如果有&和|参与的运算就要注意了,下面的代码3写法未必是你想的那样,其实际运算顺序是代码4那样的。
代码3:
if (a & mask == b) { //… }
代码4:
if (a & (mask == b)) { //… }
是不是有点奇怪呀,这是因为&和|这两个运算符的优先级低于>,<和==这类的比较运算符的优先级。
注:实际编程过程中,如果实在不清楚运算符的具体优先级关系,那么最好的保障就是在合适的地方添加上括号。
比如代码3,我们应该加上括号,也就是像代码5那样,才是我们想要的运算顺序:
代码5:
if ((a & mask) == b) { //… }
全部0条评论
快来发表一下你的评论吧 !