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=4 j=1 k=11
解:int i=1,i=i++ 赋值过程 :i=1-->i=i++,i先压入 *** 作数栈中为1,i++ 自增+1 ,i局部变量为2, *** 作数栈为1 又赋值给i 。
int j=i++ 赋值过程:把i压入 *** 作数栈为1,i++ 自增 +1 int i=2局部变量 ; *** 作数栈赋值给了j,所以j等于1
int K=i+ ++i *i++ 赋值过程:i 现在等于2,把2压入 *** 作数栈中,++i 先自增 +1 ,i=3,把3压入 *** 作数栈中,i++ 先把i压入 *** 作数栈中为3 ,再自增i=4,那么现在 *** 作数栈中 2+3*3=11赋值给K。
总结:
赋值最后计算,等于右边的从左到右加载值依次压入 *** 作数栈,实际算哪个看运算符,自增自减直接修改变量的值,不经过 *** 作数栈,赋值之前,临时结果也在 *** 作数栈中
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)