1、i++
是先使用再累加,即先使用i的值,
int i = 0;
int a = i++;
结果:
a=0;i=1;
拆开来看,是先将i赋值给a,然后i再进行i=i+1;的运算
2、++i
是先累加再使用。
int i = 0;
int a = ++i;
结果:a = 1;i = 1;
拆开来看是i先进行累加,然后再赋值给a
3、(i++)+(i++)+(i++)和(++i)+(++i)+(++i)的运行结果
int i = 0, j = 0, z = 0;
int a;
a = (i++);
结果:前面已经给出a=0
a = (j++)+(j++);
结果:第一个i++的结果是0,在进行第二个i++时I的值已经变为了1,所以这个a=0+1=1
a = (j++)+(j++)+(j++);
结果:在进行第二个i++后,i的值已经变为了2,所以这个a=0+1+2=3
后面的可以依次类推…….
int i = 0, j = 0, z = 0;
int a;
a = (++i);
结果:前面已经给出了a=1
a = (++i)+(++i);
结果:在第一个++i运算后第二个i就变为了1,然后运行第二个后i就变为了2,注意这个时候第一个++i也会引用i的值,为什么第一个++i会引用这个我还不清楚,有知道的可以留言,最后结果就变为了a=2+2=4;
a = (++i)+(++i)+(++i);
结果:前面两个值前面已经给出了,第三个++i引用i的值然后运行,至于为什么前面的没有再引用第三个的值这个我也不清楚,有知道的可以留言,最后的结果为a=2+2+3=7
后面的可以依次类推…….
4、效率
对比a = ++i和a = i++两种
实际上可以写成
int i =0;
int a;
++i的计算,在运算后就直接返回i累加后的值
i = i+1;
a = i;
i++的计算,需要先产生一个临时对象来保存没有修改前的值,然后返回这个值后,再累加
int j = i;
a = j;
i = i + 1;
在效率上对比,越是多次的计算,差别就会越大,所以++i的效率会更高于i++