幕_后
2016-12-09 16:14
{
A=5;
S=++A;
}
在这个程序段是不是先运行S这一行,然后再运行A这一行?
不是的,运行顺序不变。先赋值a=5,然后,++a是先自加1后赋值给a,a=6,再赋值给s。输出结果为s=6,a=6;
首先这个括号的程序里我们可以看成有两个小段程序(因为有两个分号),一个是A=5,另外一个是S=++A;
再执行这个括号里的程序时,按照从上向下的顺序执行,先执行 A=5 这个程序;再执行S=++A;这个程序;但是再执行 S=++A 这个程序的时候++A这个算法是优先于S=++A这个程序执行的,也就是(++A)这个整体先执行是6;然后这个整体再赋值给S。
如果是S=A++的话,由于A++是后于这个程序段执行的也就是S=A这个先执行,然后再执行(A++);
A=5;
S=++A
此时S的结果是6
A=5;
S=++A
此时S的结果是5
语句的执行顺序是不会变得,这里是++a和a++的区别,
a++是先执行完本条语句的运算,然后a自增
++a是先自增,然后执行本条语句的运算
S=++A,是先对A进行自加1的操作后,再将值赋给S,最后A=6,S=6 如果S=A++,则是先将A的值赋给S,然后A再自加1,最后S=5,A=6。
Java入门第一季(IDEA工具)升级版
1165546 学习 · 17586 问题
相似问题