黑马程序员技术交流社区

标题: 自增问题 [打印本页]

作者: sl123    时间: 2015-8-12 23:18
标题: 自增问题
int a=2;
a=a++;
System.out.println(a);
这个结果为什么是2呢?a赋值完后,不是还进行自增运算了吗?
自增后a就变为3了,为什么打印是2呢?
作者: danniu1314    时间: 2015-8-13 09:39
先赋值后再自加,去论坛看看吧,我发了一个帖子就说这个的
作者: 大漠孤星    时间: 2015-8-13 10:01
a=++a  的结果才为3!
作者: 求学之路    时间: 2015-8-13 10:02
第一次执行 a=a++,先把右面的a赋值给了左边的a,a为2,之后a自加1之后,没有再次赋值给a了,a已经被赋过一次值了,要是改成b=a++,a自加1之后,赋值给了a,a就是3了
作者: yantao0401    时间: 2015-8-13 14:51
要分清是先运算的是什么 。
作者: 耀阳圣尊    时间: 2015-8-13 14:51
楼上正解0.0
作者: cc3441251    时间: 2015-8-13 14:57
这个确实容易出错,正好在看这一部分
作者: burningzzy    时间: 2015-8-13 18:16
后置++,会产生一个临时的量,这个量的值相当于a的一个副本,然后将a的值自增1,将副本的值返回
作者: wangchao1992    时间: 2015-8-13 18:57
先搞清运算符优先级
作者: 3174918418    时间: 2015-8-13 20:04
5楼正解, 这题常考唷
作者: hellojavacode    时间: 2015-8-13 20:13
当++写在了后面的时候,a原来的值先进性赋值运算,然后再对自身+1.如果在是++a,则本身先+1,然后进行复制运算。如果要打印出3,就得这样写:a=++a;
作者: CharnLau    时间: 2015-8-13 22:33
其实楼上的说法随然可以理解,但是思想是错误的!这个涉及到了内存!楼主可以看看老毕的视频,里面就专业的讲解!
作者: 永飞    时间: 2015-8-13 22:44
这个是个挺复杂的问题建议不要深究记住就好
作者: 陈cc    时间: 2015-8-13 22:48
学习了!!!!!!!!
作者: 蓬头小道士    时间: 2015-8-13 22:54
a++是先赋值在自增,所以还是2




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