x=x++,x还是等于0,这个x++完全是没用的吗?我觉得没用,就想确定下作者: xuaner0719 时间: 2013-8-1 20:47
class Demo {
public static void main(String[] args) {
int x = 0;
x = x++;//x没有先加1就把值赋给了前面的x,前面的x的值是0,后面的x++后是1
System.out.println(x);//此时x打印的是上一行前面x的值
}
}作者: 逆袭的风 时间: 2013-8-1 20:49
x=x++;
对于本句的理解应该是这样的,等号右边x先对左边赋值为0,然后再自加1为1,但是之后并没有再次赋值给左边,所以左边还是0.
也就是说这句有没有效果是一样的,可以不要
一般.没人会这么写代码,都是y=x++...z=x++等等
另外同一句代码中最好不要对一个变量进行多次赋值,作者: 肖博文 时间: 2013-8-1 20:59
int x = 0;
x = x++;
分解开来,它的执行步骤如下:
(1)右边的x为0,此时由于自增是在右边,所以将0存储起来,类似于int temp = 0;
(2)右边的x加1,此时x的值为1;
(3)现在才开始给左边的x赋值,即 x = temp;
(4)代码相当于如下:
int x = 0;
int temp = x;//因为自增在右边。
x = x + 1;//马上开始自增。
x = temp;//最后才赋值。
此时打印的就是最后x的值,即0.
因为x++是一次运算,优先于赋值完成,所以会导致上述结果。你可以用这种方法测试,结果都符合此规律。作者: 张亚军 时间: 2013-8-1 21:59
int x=0,y=0,z=0;
x=x++;
x++
有用的,亲。。。。。。。。。。。。。。。。
******************************************
x++和++x单独用,结果都是一样的
int x=0;
x=x++;
x++//x=1
++x//x=1
但是y=x++,z=++x,效果不一样