本帖最后由 邓利军 于 2012-9-23 11:19 编辑
当自增参与运算的时候,++在前在后是有区别的,
i= i++;//先进行临时存储,再自增,再将临时存储的值进行赋值给左边的i。
具体来说就是这样:
因为右边这个i在前,++在后,说明右边这个i的数值需要参与++以外的运算。比如赋值给左边这个i的运算。
所以,运算过程是这样的,有三步:
右边运算: 1,先将i变量中的数据,进行临时存储。
temp = i,这时这个temp值为10,明白吧?????
2,自增运算。
i = i+ 1;
i = 11;
左边运算: 3,将临时存储i数据的变量赋值给左边的i
i = temp;
i = 10;
因此输出的就是这个临时存储的数据10,
相反,如此是 i=++i,那么就先自增,只走两步,第一,先自增,右边的i为11, 第二,后赋值,左边的i为11,那么输出结果就是11了. 如果还有问题,请回复.
______________________________
再次回复楼主:
在这个环境下,第二步确实没有起到什么作用.
也符合i++的用法,只是这个环境中,没有使用到++而已.
我举个用到第二步的例子,这得扩展知识量了,可能问题会变得复杂.......咱们就当交流学习,,如下:
class Test2
{
public static void main(String[] args)
{
int a = 3,b;
b = (a++)+(++a)*2+(a++)+(++a); //b由4个值相加得来,分别是 3+5*2+5+7,结果是b=25..你先运行一下肯定是25.
System.out.println("b="+b);
}
}
第一个括号,先使用3,然后加自增为4给第二个括号,此时a为4 ,这一段使用值为3
第二个括号,先自增为4+1为5,使用5,然后乘以2为10,此时a为5,这一段使用值为10
第三个括号,先使用为5,然后自增为5+1为6,此时a为6 ,这一段使用值为5
第四个括号,先自增为7,使用a=7,此时a为7 ,这一段使用值为7
结果加起来是b=25..
有问题请再回复.
|