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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

长姿势阿里
回复 使用道具 举报
很容易忽略的一个知识点,我们考试的时候就考过,全班大部分人都错了。
回复 使用道具 举报
hydra 中级黑马 2016-3-29 11:22:37
43#
学习了,涨姿势,
回复 使用道具 举报
刚学的时候我也纠结了很久
其实就是程序底层的运算顺序问题
....

点评

是呢,其实也很简单  发表于 2016-3-29 18:11
回复 使用道具 举报
回复 使用道具 举报
涨姿势,长知识,谢谢楼主分享
回复 使用道具 举报
dxw 中级黑马 2016-3-29 23:49:30
47#
收藏了,好东西!!!!!!
回复 使用道具 举报
zhoubinjian 发表于 2016-3-23 02:00
不行了,还是没有理解过来 ,,内存上的i+1,是怎么回事,怎么是i赋值给i+1的呢, ...

int i =0;
i = i++;
可分为2个式子看:
i=i; i=i+1;
在计算机底层运算是从右向左的,所以
先是 i=i+1,即i=1;  然后再i=i,即 i = 0;
这相当于做了一次重新赋值操作,因此结果还是0;
回复 使用道具 举报
腾龙3158 来自手机 中级黑马 2016-3-30 00:37:57
49#
涨姿势了!
回复 使用道具 举报
学习了!!
回复 使用道具 举报
感觉楼主的好麻烦,其实可以这样理解.
i=i++实际上等效于
temp=i;//temp=0
i=i+1;//i=1;
i=temp;//i=0;执行完这句话i还是等于0,不管循环多少次你都是在重复这个过程而已.i++的值还是没加之前的temp
实际上就是前++和后++的区别
回复 使用道具 举报
ipursue 来自手机 中级黑马 2016-3-30 12:11:14
52#
我觉得这种编译处理方式,不是很合适,违背了正常的逻辑。
回复 使用道具 举报
赋值问题,直接写++i;就行了,
i=++i;给i的赋值一直是0
回复 使用道具 举报
长知识,自测题遇到过,不运行简直不敢相信。

点评

是呀,我第一次也答错了,一涉及编译器的底层机制很容易弄错的  发表于 2016-3-30 22:19
回复 使用道具 举报
赞一个呗
回复 使用道具 举报
涨知识了
回复 使用道具 举报
无论是++i还是i++其实都做了自加1这个运算,区别是是否参与运算
++i在自加1后直接参与运算。
而i++在自加1后,参与运算的是i未加1之前的值,
在当i++赋值给i时,将加1的值覆盖掉了,又变为原来的值了。
回复 使用道具 举报
hkh3321313 来自手机 中级黑马 2016-3-31 11:06:16
58#
zx7750462 发表于 2016-3-30 11:36
感觉楼主的好麻烦,其实可以这样理解.
i=i  实际上等效于
temp=i;//temp=0

我觉得我俩这个可以结合一下,更容易理解呢
回复 使用道具 举报
涨姿势了
回复 使用道具 举报
每天都逛帖,赞一个~很不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马