Java模数运算符-为什么结果出乎意料?
我理解在模数Java模数运算符-为什么结果出乎意料?,java,expression,operator-precedence,modulus,Java,Expression,Operator Precedence,Modulus,我理解在模数17/12=5中 为什么4+17%2-1值是4,而(4+17)%2-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=04+17%2-1被解释为4+(17%2)-1==4(百分比运算符的优先级高于) (4+17)%2-1=21%2-1=(21%2)-1=1-1=0运算符优先级%,因此 4 + 17 % 2 - 1 相当于 4 + (17 % 2) - 1 21 % 2
17/12=5中
为什么4+17%2-1
值是4
,而(4+17)%2-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
4+17%2-1
被解释为4+(17%2)-1
==4
(百分比运算符的优先级高于
)
(4+17)%2-1
=21%2-1
=(21%2)-1
=1-1
=0
运算符优先级<首先计算代码>%,因此
4 + 17 % 2 - 1
相当于
4 + (17 % 2) - 1
21 % 2 - 1
17%2==1
产生4+1-1
等于4
在此处放置括号时,将更改求值顺序:
(4+17) % 2 - 1
相当于
4 + (17 % 2) - 1
21 % 2 - 1
同样,由于%
比-
具有更高的频率,因此产生
1 - 1
这是
0
运算符优先级<首先计算代码>%,因此
4 + 17 % 2 - 1
相当于
4 + (17 % 2) - 1
21 % 2 - 1
17%2==1
产生4+1-1
等于4
在此处放置括号时,将更改求值顺序:
(4+17) % 2 - 1
相当于
4 + (17 % 2) - 1
21 % 2 - 1
同样,由于%
比-
具有更高的频率,因此产生
1 - 1
哪个是0