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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hkh3321313   /  2016-3-22 23:10  /  9667 人查看  /  115 人回复  /   7 人收藏 转载请遵从CC协议 禁止商业使用本文

这道题老师讲了 还是每台明白 就背下来了
回复 使用道具 举报
cohle1992 来自手机 中级黑马 2016-3-31 13:14:44
62#
学习了!收藏!
回复 使用道具 举报
看不懂 ,
感觉
int i = 0 ;
i=i++  , i 先赋值 给左边  然后 自增  自增完了  还赋值 覆盖刚才的 i 吗 ?   看来是不赋值的 打印  i = 0
但是换成
a= i++,  先赋值给左边 然后自增  为什么这个自增后 打印就是 自增后的 1 呢  打印  i=1   a = 0
回复 使用道具 举报
长知识了。。。。
回复 使用道具 举报
不注意真会被坑

点评

是呀,这个是国外一本书叫做java puzzlers里的题目,有兴趣的话可以看看哦  发表于 2016-3-31 20:21
回复 使用道具 举报
学习学习吧
回复 使用道具 举报
这个和编译器相关的

点评

是的呢,所以在c++中就能得到想要的结果  发表于 2016-4-1 15:31
回复 使用道具 举报
还不是很懂啊
回复 使用道具 举报
厉害,分析有够深的
回复 使用道具 举报
搜噶,了解了
回复 使用道具 举报
涨姿势了  谢谢
回复 使用道具 举报
学习一下        
回复 使用道具 举报
不太明白感觉还是挺牛的
回复 使用道具 举报
zhoubinjian 发表于 2016-3-23 02:00
不行了,还是没有理解过来 ,,内存上的i+1,是怎么回事,怎么是i赋值给i+1的呢, ...

是指赋值给那块内存吧,就是i代替了i+1
回复 使用道具 举报
可以,涨姿势了,不细想一下还真是容易错
回复 使用道具 举报
xiaofushen 发表于 2016-3-23 00:18
这个问题一开始我和同学也纠结好久,不过后来明白了,不过楼主分享的很详细,理解又加深了. ...

i = i++;不是先赋值然后再自增吗?我看那个内存图上是先自增然后赋值呢!!!
回复 使用道具 举报
NeverBack 发表于 2016-4-13 22:42
i = i++;不是先赋值然后再自增吗?我看那个内存图上是先自增然后赋值呢!!!

我们说的先赋值再自增是对于j=i++的情况,因为就结果而言,是先赋值再自增.对于底层的java编译器是如何实现这一操作的,我们并不知道,对于楼主发的java编译器对于i++的操作,就结果而言是和"j=i++先赋值再自增"不矛盾的.而对于i=i++,就不能认为是先赋值再自增了,因为底层是楼主发的内存图那样操作的.
回复 使用道具 举报
本来还挺懂得,这一下整蒙了
回复 使用道具 举报
这个问题一开始我和同学也纠结好久,不过后来明白了,不过楼主分享的很详细,理解又加深了.
回复 使用道具 举报
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马