前言:当变量自增操作独立的时候,如 i++ 和 ++i 的最终i的值是一样的,但当遇到复杂的操作时就需考虑它的内在操作。
1:简单赋值操作
如 int i = 1 ; int j = i++; j的结果为1 int i = 1;int j = ++i; j的结果为2
i++是先赋值再计算,++i是先计算再赋值
2:复杂操作
如 int i = 1 ; i = i++;
当一个变量参与计算时会创建一个该变量的操作数栈
i=i++操作时,先将i的值放入操作数栈,i++后值变为2赋值给变量i,最后再将i操作数栈里的值赋给i
如 int i = 1 ; int k = i + ++i * i++
先将表达式中i的值1入栈,再将i自增后的值2入栈且i变量的值变为2,再将i的值2入栈且i变量的值自增变为3
接下来就是运算了,i的操作数栈栈顶两元素出栈进行乘运算(2*2=4),结果再入栈
再将栈顶两元素出栈进行运算(4+1=5),将结果入栈
当操作数栈只有一个元素时,将其出栈赋给k变量,k最后的值为5