黑马程序员技术交流社区

标题: 关于"++"问题 [打印本页]

作者: 王安琪    时间: 2013-6-26 21:57
标题: 关于"++"问题
本帖最后由 王安琪 于 2013-6-26 22:04 编辑
  1.       在定义一个i的时候如果写成  i=i++;与 i++;                                  i=i++;   i++;加的时候内存储存方式有什么不同?
复制代码

作者: ytblght55    时间: 2013-6-26 22:07
http://bbs.itheima.com/thread-58027-1-1.html
作者: ㄗs:/|丶hearts    时间: 2013-6-26 22:30
本帖最后由 ㄗs:/|丶hearts 于 2013-6-26 22:37 编辑

定义的时候?!是这样吗:int i = i++;    定义的时候这样写 肯定要报错的
运算的时候 int i=1;      
i++;  结果是i 自增1 ,i =2
i=i++; 先运算i++,这时候i =2 ,i++ 的值还是1;然后把i++的值(也就是1)赋给i, 最后结果还是i=1

作者: 王楚鑫    时间: 2013-6-26 22:36
我的理解:
i=i++可以理解为右边因为运算符决定了这个i值有用处,所以自增之前就类似在内存中开辟了一个地方先保存i的值,然后i再自增,接着又把i值赋给i,就把刚才自增的给覆盖了,
temp=i--->i=i+1---->i=temp
而i++是自增


不知道我理解的对不对,毕老师的视频第二天15小节对这个问题讲的挺细的
作者: 张海龙    时间: 2013-6-27 12:58
刚刚学会这个问题,比如 int i=t(t是一个数值);i=i++.这样的话,在程序到i=i++.处。java的编译器会动态分配一处内存存放i的原始值,然后i++(即i自加1),接下来编译器将存放的那个原始值赋予i(=左边的i),即此时i等于原始值(t),最后编译器就释放存放原始值的内存。所以最后i=t;




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