java里,执行int i=0;i=(i++)%6;后为什么i是0?不是1

2024-11-17 12:38:43
推荐回答(5个)
回答1:

运算符++的优先级没有%高,所以%先算,一步一步算吧
i=(i++)%6,可以分为三步:
一步(i++)%6由于i还没自增,所以求余为0;

二步i++,现在i=1;
三步赋值给左边的i,i还是等于先前的余0
所以最后i为0而不是1

回答2:

你先要知道这两个:
i++ 是先赋值,再自增
++i 是先自增,再赋值

你的问题中
(i++)%6 可分三个步骤
1. 先赋值 此时i==0 ; (i++) %6 表达式=0
2. i自增 i=1;
3.右边表达式赋值给i ,所以i还是等于0

回答3:

i=0;i=(i++)%6;
先将i的值赋值个i++这个表达式,值为0,再执行i=i+1=1;
再执行表达式%6,即0%6;

i++与++i的差别:
i++:先赋值给表达式,再i=i+1;
++i:先i=i+1,再将现在的i赋值给表达式

回答4:

i++是先运算后在自加,所以(i++)%6,实际上是0与6求余,结果为0.如果换成(++i)%6,则为1

回答5:

你要看++的位置,(++i)%6是执行i=i+1后再%6。而(i++)%6是i%6执行后再进行i=i+1