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

关于int a =1,a=a++ ,打印a的结果的问题,能解释下吗

44 个回复

正序浏览
受教了!{:2_36:}
回复 使用道具 举报
受教了。。。。。。。。。
回复 使用道具 举报
a++先运算后自增,运算过程 (1)b = a,此时b = 1;(2)a = a + 1;此时a = 2,

代码.png (9.6 KB, 下载次数: 26)

代码.png

结果.png (1.65 KB, 下载次数: 28)

结果.png
回复 使用道具 举报

同样求解,求哪位大神来分享一下
回复 使用道具 举报
dsap 中级黑马 2015-11-15 12:19:05
40#
从右往左运行是怎么运行的?
回复 使用道具 举报
前++是先++在运算,后++是先运算后++;所以a=a++;就把a给了a没变。
回复 使用道具 举报
其实可以这么记,++在变量前面就先自增然后再赋值,如果++在变量后面就先赋值,再自增。
回复 使用道具 举报
我觉得,学到后面没人会这样写代码了,太无聊
回复 使用道具 举报
只是给a做了重新赋值
回复 使用道具 举报
a++ 表达式结果为1   a为2   最后a++表达式的值又赋值给a  所以a的值最后为1   你可以单独打印啊  打印个a++  然后打印个a  就知道了
回复 使用道具 举报
syb012 中级黑马 2015-11-14 20:48:49
34#
因为a++中a在自增之前会先把原来的值放入一个临时变量里,然后a自增,然后用那个临时变量参与运算。

看起来就像a后增一样。一般情况下的效果的确是a后赠。

但事实是a先增,然后用自增前的那个存在临时变量的数值参与运算。

那么
int a=1;
a=a++;
这两句话可以拆解成下面的语句:
int a=1;

int temp=a;  //这中间两句其实就是a++的过程
a=a+1;

a=temp;  //从这到上三句其实就是 a=a++;的过程
回复 使用道具 举报
结果是1
a = a ++
这里是a 先把 1赋值给了a  然后才++ 的
回复 使用道具 举报
为什么我觉得都是大神{:2_33:}
回复 使用道具 举报
这是底部的隐形转换啊,因为在底部计算机是从右往左算的啊,
回复 使用道具 举报
+icer+ 中级黑马 2015-11-14 10:51:49
30#
你可以看成 a = 1;b = a++; a = b;这样就好理解了
回复 使用道具 举报
哈哈昨天也有人问这个
回复 使用道具 举报
哪位大神知道
回复 使用道具 举报
a++相当于两条语句:a=a;a=a+1;所以结果是1;
回复 使用道具 举报
打印结果居然是1,一直以为是2
回复 使用道具 举报
打印a=1把
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马