日期:2014-05-20  浏览次数:20877 次

求分析一下“x++ + ++x”
请问下列代码为什么会输出4?我感觉应该是3吧?x++不是该在输出语句之后才执行自增1的吗?
请分析一下执行过程,谢谢!
Java code

int x = 1;
System.out.println(x++ + ++x);



------解决方案--------------------
这个问题,也算是月月有啊。。。

int x = 1;
System.out.println(x++ + ++x);

解释下就是:
System.out.println(1 + 3);


推荐下写的相当好的扫盲贴:http://www.ticmy.com/?p=43
------解决方案--------------------
++ 的优先级比 + 的优先高。所以,先算++ , 再算 + 
i++ 是,将i进行++,而参于运算的是执行++以前的i值。
++i 是,将i进行++,而让执行++以后的i值,参于运算。
x++ + ++x的执行顺序是这样的:
1.x++:执行后,x = 2
2.++x:执行后,x = 3
3. + 运算:x++之前的x值为1;++i后,值为3;就是1+3
------解决方案--------------------
x++ 是先取值再+1 这里x=1
之后+1 x=2
++x 是先+1再取值 这里是x=2+1=3

那么x++ + ++x,即为 1 + 3


输出应该是4