int x=100; int y=200; System.out.println(x+(x=y)); //这句的执行流程是:自左向右执行,即先是100+(x=y),其次100+(x=200),最后 100+200;输出300;x值变为200 System.out.println(x); //输出200
int x=100; int y=200; System.out.println(x+(x=y)); //这句的执行流程是:自左向右执行,即先是100+(x=y),其次100+(x=200),最后 100+200;输出300;x值变为200 System.out.println(x); //输出200
小弟想不明白 为什么(x=y)附完值之后x=200;那x+(x=y)应该是200+200啊 为什么是100+200???
int y=200;
System.out.println(x+(x=y));// 第一个x是100 还没有被赋值 第二个x被赋值了
System.out.println(x);// 这个X 是已经被赋过值的了
300 200
第2个是200
第一个先执行第一个x,此时x是100,然后x=y把y的值200赋给了x,x就成了200.
第一个:在执行(x=y)前x=100,而(x=y)返回300,所以结果为300
第二个:x已经是200,所以结果为200
你可以写成0+(x=y)这样可以测出+右边的值是两百
实际上,“+”在运算的时候是先放入临时变量中的,先把左x的100放入左临时变量中。然后在运算右边为200,放入右临时变量中。然后拿左右临时变量中的值去算的。100+200
int y=200;
System.out.println(x+(x=y)); //这句的执行流程是:自左向右执行,即先是100+(x=y),其次100+(x=200),最后 100+200;输出300;x值变为200
System.out.println(x); //输出200
int y=200;
System.out.println(x+(x=y)); //这句的执行流程是:自左向右执行,即先是100+(x=y),其次100+(x=200),最后 100+200;输出300;x值变为200
System.out.println(x); //输出200