Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java模数运算符-为什么结果出乎意料?_Java_Expression_Operator Precedence_Modulus - Fatal编程技术网

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