int i=1,m;
m=(i++)+(++i)+(++i)+(++i)+(i++);
System.out.println(m);
System.out.print(i);
这个m的值为什么是18 怎么计算的,还有刚才那个帖子里的
int i=0;
while(true){
i=i++;
System.out.println(i);
}
怎么回事 为什么会循环输出0?
应该是0 1 2 3……
才对啊?
m=(i++)+(++i)+(++i)+(++i)+(i++);
System.out.println(m);
System.out.print(i);
这个m的值为什么是18 怎么计算的,还有刚才那个帖子里的
int i=0;
while(true){
i=i++;
System.out.println(i);
}
怎么回事 为什么会循环输出0?
应该是0 1 2 3……
才对啊?
m=(i++)+(++i)+(++i)+(++i)+(i++);
System.out.println(m);
System.out.print(i);
这个m应该是这么算的?
m=1+2+3+4+4
应该是14啊?
或者
m=4+4+4+4+4
是20?
但是18哪里来的
i++这个++不是整个表达式算完之后才开始自加吗?
m=(i++)+(++i)+(++i)+(++i)+(i++);i=1 2 3 4 5 6
m=1+3+4+5+5=18
先+1,然后把i+1的值作为表达式的值,所以
(i++)+(++i)+(++i)+(++i)+(i++);
(i++) 表达式的值是 1,然后1加1变为2
(++i) 先进行i+1,即i变为3,然后把3作为表达式的值
(++1) 同理i变为4,表达式的值是4
(++i) i变为5,表达式的值是5
(i++) 先取i的值5作为表达式的值,然后i+1变为6
所以 m=表达式的值相加=1+3+4+5+5=18同理
i=i++; //先取i的值0作为表达式的值,然后i+1变为1,然后把表达式的值赋给i,
//因为表达式的值是0,所以i又变回了0,这样直道循环结束,i都是0
i=i++;
相当于
int temp=i++; //先取i的值0,然后i自增变为1,然后把0赋给temp,即temp是0
i=temp;同理
(i++)+(++i)+(++i)+(++i)+(i++);
相当于
int temp1=i++;
int temp2=++i;
int temp3=++i;
int temp4=++i;
int temp5=i++;
m=temp1+temp2+temp3+temp4+temp5