先来看一个小程序:
public class Up {
public static void main(String[] args) {
int i=1;
i=i++;
int j=i++;
int k=i + i++ * ++i;
System.out.println("i="+i);
System.out.println("j="+j);
System.out.println("k="+k);
}
}
再了解下自增变量:
前缀式:如 ++i。前缀式是先加1再使用。
后缀式:如 i++。后缀式是先使用再加1
最后再来分析:
i=i++; i先赋值再+1,所以i被赋值后依旧是1
int j=i++; 先赋值 j的值为1 然后i再增1 i=2
int k=i + i++ * ++i; 第一个i的值为2,第二个为后缀先用2乘然后加1 ,第三个i此时为3,但是因为是前缀式所以先加1.变成4在跟2相乘
所以k=2 + 2*4
输出结果:
如果 int k=i + ++i * i++; k的值不在是10 分析后 i=2 ++i变成3 ,i++先进行运算 所以结果是 2 + 3*3 =10