求教 关于++的有关问题

求教 关于++的问题?
Java code
int i=1,m;
m=(i++)+(++i)+(++i)+(++i)+(i++);
System.out.println(m);
System.out.print(i);

这个m的值为什么是18 怎么计算的,还有刚才那个帖子里的
Java code
int i=0;
while(true){
i=i++;
System.out.println(i);
}

怎么回事 为什么会循环输出0?
应该是0 1 2 3……
才对啊?

------解决方案--------------------
说的简单一点
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