int x=-1,y=0;
System.out.println(y=x++ +x);//output: -1
System.out.println(y=x+ x++);//output: -2请问下第一个表达式为什么答案是-1,++不是在计算完整个表达式才对变量进行+1操作吗?谢谢!
System.out.println(y=x++ +x);//output: -1
System.out.println(y=x+ x++);//output: -2请问下第一个表达式为什么答案是-1,++不是在计算完整个表达式才对变量进行+1操作吗?谢谢!
y=x++ y = 0;
0 + x = -1;
System.out.println(y=x++ +x);//
y=x++ +x可以分解成两步来看x++先取x的值为-1,然后x的值变为0;则第二个x此时为0了,所以-1+0=-1,即输出-1
System.out.println(y=x+ x++);//
y=x+ x++这个也分成两步来看:前半部分x值为-1,后部分x++此时是先取x的值(-1),然后x再加一变为0,但x++表达式的值为-1;所以-1+(-1)=-2
y=x++ +x可以分解成两步来看x++先取x的值为-1,然后x的值变为0;则第二个x此时为0了,所以-1+0=-1,即输出-1” 看来好象不是这样的啊!而是在它本身取值之后就马上对变量进行+1,好多书都讲的不清不楚的~~~~哎~
{
public static void main(String args[])
{
int x=-1,y=0;
System.out.println(x);
System.out.println(y);
System.out.println(y=x++ +x);//output: -1
System.out.println(y);
System.out.println(x);
System.out.println(y=x+ x++);//output: 0
}
}看了代码你就明白了。
-----------------------------
int x=-1,y=0;
System.out.println(y=x++ +x);//output: -1
System.out.println(y=x+ x++);//output: 0
------------------------------------------------
原因:
1.单目运算符优先级要高所以表达式:
y=x++ +x 等同与
y=(x++)+x
=-1+0 //此处因为x++表达式的值为-1,而此时x的值为0。
=-1
2.在第二个表达式中由于此时x的值为0。所以
y=x+ x++
=x+ (x++)
=0+0 //此处因为x++表达式的值为0,而此时x的值为0。
=0-------------------------------------------------------------------
由此可以得出楼上的似乎解释的有问题了!
楼主想问的是两个表达式的差别;所以他的代码应该在第二个输出语句前重新把x的初值设为-1,y设置成为0