java中的运算

来源:百度知道 编辑:UC知道 时间:2024/06/24 05:38:25
int x=5;
int m=0;
x+=x++ +(x++ +m);
System.out.println(x):
结果我认为是15,但是是16.我想知道为什么,要具体的。
我认为x++应该只对循环有影响吧。它是先赋值再加一,值都已经赋了,再加一还有用吗?位什么?

不仅仅只对循环有作用,没有哪本书上是这么说的。
觉得你已经看到了问题的关键。
(x++ +m);这里面的x开始的值已经是6了,就是因为在执行之前的第一个x++ 时,x已经由5变成6了。

不会吧 好像也不该是16吧....

x+=x+++(x+++m); 该表达式等同于:
x = x + (x+++((x++)+m));
x = 5 + (6+++((5++)+0)) = 16
++是一个一元运算符,在任何一个表达式中都有用,而不仅仅是循环

X++ 执行的顺序是先返回X的指在X自加1.所以X++返回的值是5 X自身是6
++X 则是X先自加1,然后在返回.所以++X 返回的值是6 X也是6