【发布时间】:2011-02-05 10:08:07
【问题描述】:
我知道在模数 17/12 = 5 中。
为什么4+17 % 2-1的值为4,而(4+17) % 2-1的值为0?
【问题讨论】:
标签: java expression operator-precedence modulus
我知道在模数 17/12 = 5 中。
为什么4+17 % 2-1的值为4,而(4+17) % 2-1的值为0?
【问题讨论】:
标签: java expression operator-precedence modulus
运算符优先级。 % 首先被评估,所以
4 + 17 % 2 - 1
等价于
4 + (17 % 2) - 1
17%2 == 1 产生 4+1-1 等于 4
当你把括号放在那里时,你改变了评估的顺序:
(4+17) % 2 - 1
等价于
21 % 2 - 1
同样,由于 % 的优先级高于 -,因此产生
1 - 1
这是0
【讨论】:
4+17 % 2-1 被解释为4+(17 % 2)-1 = 4 + 1 -1 = 4(% 运算符的优先级高于+ 和-)
(4+17) % 2-1 = 21 % 2 -1 = (21 % 2)-1 = 1-1 = 0
【讨论】: