Java模数运算符 - 为什么结果出乎意料?

时间:2011-02-05 10:08:07

标签: java expression operator-precedence modulus

我理解模数17/12 = 5

为什么4+17 % 2-1值为4(4+17) % 2-1值为0

2 个答案:

答案 0 :(得分:6)

运营商优先权。首先评估%,所以

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

答案 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