代码:
int i = 1;
i = i++;
int j = i++;
int k = i + ++i * i++;
System.out.println(i + " " + j + " " + k);
运行结果:
首先定义一个局部变量i = 1;
i = i++:
当执行i = i++时,i = 1入栈,执行i++入栈,执行结果2赋给局部变量i,此时局部变量i = 2;随后最先入栈的i = 1出栈,赋给局部变量,得到 i = 1;
int j = i++:
int j = i++同上,最终赋值给局部变量 j 的值为1,i = 2;因为在这个过程中i++ = 2赋值给局部变量 i 后,i = 1的值给了 j 。
int k = i + ++i * i++:
首先 i = 2入栈,++i入栈,i++入栈,计算++i * i++
得到9,而此时因为为计算完成,9不能出栈,所以9入栈;然后计算 9 + 2,得到k = 11;因为i++和++i的先后出栈,导致了最终i = 4。
若有不足,请指教