黑马程序员技术交流社区

标题: 求教,++x和x++ [打印本页]

作者: 下一页5    时间: 2015-5-6 00:30
标题: 求教,++x和x++
int x=9;
x=x++;
int y=5;
y=++y;
System.out.println(x+y);//求值啊

作者: ddddk    时间: 2015-5-6 00:44
x=x++的意思是先把x的值赋x再进行++运算,所有x=9
y=++y的意思是先运算++y,再进行赋值,所以y=6
x+y的值自然出来了
不知道我有没有记错
作者: 大西洋    时间: 2015-5-6 07:48
相加结果是15,因为第二个x 结果还是 9 ,第二个y,因为先自增了,结果就是6~
作者: hufu4635    时间: 2015-5-6 07:51
本帖最后由 hufu4635 于 2015-5-6 07:52 编辑

15,二楼说的很对,不过我也想问一下,int x=9;     x=x++;   x先赋值再进行自增,当自增之后x的值就变成10了吧
作者: 397543420    时间: 2015-5-6 07:57
X=X++运算是先把右边x的值赋给左边的x后,然后右边在自增一个,也就是左边x为9,右边x为10.
作者: 397543420    时间: 2015-5-6 07:59
而y=++y是右边先自增后在赋值给左边,也就是右边=6,赋值给左边后,左边也=6.这里需要明白这个=他不是数学上的=号,而是计算机当中的赋值运算符号,这个一定不能混淆了。
作者: 397543420    时间: 2015-5-6 08:00
所以说x+y就是9+6=15.明白了么,
作者: 1017161726    时间: 2015-5-6 08:32
ddddk 发表于 2015-5-6 00:44
x=x++的意思是先把x的值赋x再进行++运算,所有x=9
y=++y的意思是先运算++y,再进行赋值,所以y=6
x+y的值自 ...

说的很对,再补充一下:,x=x++,x在前,+号在后,所以是后自增,x++这个表达式的值是9,x的值却是10.
然后表达式的值赋给已经是10的x,x就又变成9了。
而y=++y就是表达式的值是6,y的值也是6,都自增了。
作者: hsx500    时间: 2015-5-6 11:21
哎,居然算得16,我的路还长啊
作者: pisces    时间: 2015-5-6 11:25
1017161726 发表于 2015-5-6 08:32
说的很对,再补充一下:,x=x++,x在前,+号在后,所以是后自增,x++这个表达式的值是9,x的值却是10.
然 ...

说的很详细。。
作者: 狙神自傲    时间: 2015-5-6 11:42
x只是执行了x+1这一步 没有赋给任何人
作者: yearn    时间: 2015-5-6 13:43
围观!!!!!!!!
作者: 13699266500    时间: 2015-5-6 16:08
一个先加再运行,一个后加再运行
作者: 知来者之可追    时间: 2015-5-6 18:33
++x是先运算后赋值,x++是先赋值后运算




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2