一道二级的题目:
int x=5,m=0;
x+=x+++(x+++m);
最后x=16,M=0;
拆开来:
第一步: X=x+( x+++(x+++m)) //这里x在前,而不是在后,就是说a+=b,结果是a=a+b,而不是a=b+a,这一点可以通过下面这个小实验证明:
String s="s1";
String s2="s2";
s2+=s;
System.out.println(s2);
输出结果是: S2s1
回到刚才
第二步:
X=5+(5+(6+0) ,得到6的结果非常意外!
最终结果是16,非常意外!
这里,我们要修正以前对++的认识,以前认为++是在运算结束之后+1,而实际上在参与运算之后它就+1了!!
下面用这个例子来验证:
public static void main(String args[]){
int i=0;
i=i+++m(i);
System.out.println(i);
}
static int m(int i){
System.out.print(i+",");
return 0;
输出结果是1,0