黑马程序员技术交流社区

标题: 关于a=(a++)+5;的小问题 [打印本页]

作者: HiloFeng    时间: 2014-12-15 23:36
标题: 关于a=(a++)+5;的小问题

int a=(a++)+5;的结果怎么分析的?
我的理解是(a++)的值为2,但是里面又产生一个a=3的值,然后是2跟5相加,还是3跟5相加。
作者: it667135    时间: 2014-12-15 23:44
你a的初始值是多少就是多少和5相加
作者: Zomu_文林    时间: 2014-12-15 23:58
因为a++的++在后面,所以它是先操作a这个数,就是a+3即2+3=5,运算完然后a再自增,自增完后b=3,最后再把5赋给a,所以最后输出的a为5。
作者: 青衫禅客    时间: 2014-12-16 00:07
我们老师说的是:把a的值提出来和5相加再赋给a,至于a++的值就不用管了,其中考虑的是执行顺序的问题
作者: quick3g    时间: 2014-12-16 00:50
问题重复了。。。。。http://bbs.itheima.com/thread-157690-1-1.html
作者: Honelyboy    时间: 2014-12-16 21:50
a++是先运算,后自增。你的这道题有问题,没有对a初始化。
作者: HiloFeng    时间: 2014-12-16 21:56
it667135 发表于 2014-12-15 23:44
你a的初始值是多少就是多少和5相加

哦 忘了,这是看的视频中的一个题目   a=2
作者: 禾青青    时间: 2014-12-16 22:16
大家加油吧
作者: lnscore    时间: 2014-12-16 22:20
这个问题我也挺疑惑的,感谢楼主
作者: 吻痕朋    时间: 2014-12-16 22:44
看看》》》》

作者: x277402301t    时间: 2014-12-16 23:22
是2+3=5;先计算后再自增
作者: 飞跃离开    时间: 2014-12-16 23:24
注意是a++,不是++a,所以直接用2加5.至于括号,对++而言,它本身的优先级是高于+的。所以加括号是为了提高阅读性,避免的歧义的现象。
作者: Android周    时间: 2014-12-16 23:43
这个问题我也挺疑惑的,感谢楼主
作者: 把伤痕当酒窝    时间: 2014-12-16 23:58
a的初始化值先自增1再加5,最后把值赋给a
作者: 呢?    时间: 2014-12-17 00:49
Zomu_文林 发表于 2014-12-15 23:58
因为a++的++在后面,所以它是先操作a这个数,就是a+3即2+3=5,运算完然后a再自增,自增完后b=3,最后再把5 ...

结果是7
作者: Zomu_文林    时间: 2014-12-17 00:58
呢? 发表于 2014-12-17 00:49
结果是7

:L它是+5,我看成了3。。
作者: x277402301t    时间: 2014-12-18 00:15
2+5赋给a




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