先猜一下下面这段代码的运行结果吧,猜对了你就可以撤了
int a = 10;
a = a++;
System.out.println(a);
----------------------------------华丽的分割线----------------------------------------
附上运行结果:
10
-----------------------------------------------------------------------------------------
平时我们理解的++a表示a先自加再参与运算,a++表示先参与运算再自加,在这种情况下是不太准确的
事实上,不管是a++还是++a,a都是先自加再参与运算的,比方说,可以把a++想象成一个整体,即将它当做一个式子,当执行到a++时,a的值先自加1,此时a的值为11,但是a++这个表达式的值为自加前的值,为10,将10赋给a,a的值又被修改为10,所以运行结果为10
因此应该将a的值和a++这个表达式的值分开考虑
总结为:
++在前,参与运算的是自增之后的,即表达式的值也是自增之后的
++在后,参与运算的是自增之前的,即表达式的值也是自增之前的
无论++在前还是在后,++都先做了自增,只是表达式的值不同
同时在此感谢王恩泽老师的指导~
|
|