A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

a=a++不是自身要做一次自加吗

15 个回复

倒序浏览
这个问题考察了两点
1:++和=的优先级问题
2:前++和后++的问题

首先进行的是++,a自身加1,然后再进行赋值,后++赋的是++前的值,所以程序执行的是两部
1,a值先变为a+1
2,再把a值赋值给a
结果就变成了a
回复 使用道具 举报
楼主要知道a++,是后置的自增,先用a的值然后在自增,楼主可以这样测试,b=a++然后分别输出a和b,如果想得到b的值为a+1的话,应该写b=++a
回复 使用道具 举报
zhangyibiao 发表于 2016-3-7 22:34
楼主要知道a++,是后置的自增,先用a的值然后在自增,楼主可以这样测试,b=a++然后分别输出a和b,如果想得到b ...

b=a++,b的值是1,但是a是2啊。
a=a++,将a赋给a之后,a不是还要做一次自加吗,那a就是2l啊
回复 使用道具 举报
a=a++是这样的,假设a=1,因为++后置,所以先把a的值赋值给前面的a,然后在对后面的a自增1
回复 使用道具 举报
左边的a非右边的a,++在后就是先赋值,所以左边的a等于1,右边的a就等于a + 1 = 2;
回复 使用道具 举报
a=a++;应该是运算符优先级的问题吧,先计算a++赋值给了左边,再把a赋值给左边。应该是这样吧:1. a = a+1;2. a = a。第二部右边的a还是自增前的值
回复 使用道具 举报
http://blog.csdn.net/miderph84/article/details/3390166,这个贴子说的很细  你可以看看
回复 使用道具 举报
phoenix1992 来自手机 中级黑马 2016-3-8 09:09:39
9#
a = a++,自赠浮高虽然能使这个数自增一,但因使用的位置不同,会有不同的效果。a++,先将a赋值,再自增一。如果是++a的话,先自增一,a就变成2了,然后再赋值。
回复 使用道具 举报
原来一直不懂。看完才看明白!
回复 使用道具 举报
奋飞的小模糊 发表于 2016-3-7 22:31
这个问题考察了两点
1:++和=的优先级问题
2:前++和后++的问题

先把a变成a+1,再把a赋予a,既然a已经是a+1,那赋值不就是a+1了么
回复 使用道具 举报
int a=1;a=a++的结果之所以是1,是因为++后置,是先进行赋值,再进行自增。赋值后a=1,然后a++可以看成是a+1=2.这时a=2,因为汇编语言是从右往左运算的,2赋值给a后,前面还有一个式子a=1,然后在底层重新把1赋值给a,所以输出的结果是1
回复 使用道具 举报
楼上的回答都好牵强啊,表示看的都很迷糊。网上搜了一下。然后有了我自己的理解:
int i=0;
i=i++;
这两句其实等效于下面:
int a=i;
i++;
i=a;
楼主明白了吗?我感觉就是这样解释的。
回复 使用道具 举报
后自增啊!!!!!
回复 使用道具 举报
计算机底层图

a=a .png (72.6 KB, 下载次数: 20)

a=a  .png
回复 使用道具 举报
是的,执行语句时先进性赋值存储,然后在进行自增。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马