免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 48640 | 回复: 25
打印 上一主题 下一主题

i=i+1 i++ ++I的区别? 请高手解释一下. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-16 17:06 |只看该作者 |倒序浏览
从功能上说,是一样的.

但是从机器内部而言,他们有很多的区别.


请高手解释一下.

谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-08-16 20:49 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

计算机内部实现过程有别,详细如下:
i=i+1的过程相当:
  temp=i+1; i=temp;
i++的过程相当:
  temp=i; i=temp+1; return temp;
++i的过程最简单:
  i增1然后return i 的值,一步完成,没有给任何temp变量赋值:)
  (无法用式子确切表达,请神灵原谅我的笨拙:)

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-08-16 23:31 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

其实我觉得只要注意:
i++;是一个右值.而++i是一个左值就行了.而且尽量去用++i,因为对于类类型或大型的数据类型来做相关操作时会提高效率.

论坛徽章:
0
4 [报告]
发表于 2004-08-17 09:55 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

原帖由 "THEBEST" 发表:
其实我觉得只要注意:
i++;是一个右值.而++i是一个左值就行了.而且尽量去用++i,因为对于类类型或大型的数据类型来做相关操作时会提高效率.



右值,左值??如何区别??

++i为什么会效率高???


谢谢!!!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-08-17 12:40 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

简单的说是右值是放在=(赋值运算符)右边的操作数.
而左值是可以放在其左边的操作数.
左值可以取地址,而右值不行.
我说的++i的效率高是征对用i++来说的.你可以看看funyoung 的解释.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2004-08-17 12:48 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

写个程序,gcc成汇编的代码看就明白了。

论坛徽章:
0
7 [报告]
发表于 2004-08-17 17:20 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

i++是指在执行该语句后才加1;++i是指加1以后再执行该语句;

论坛徽章:
0
8 [报告]
发表于 2004-08-17 17:28 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

建议写成i+=1这样效率高
不要过多地使用i++和++i
太多了会容易引起歧义~~
建议只在循环里使用
运算的时候不要用

论坛徽章:
0
9 [报告]
发表于 2004-08-17 17:32 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

我上面的贴子已经说的很清楚了

论坛徽章:
0
10 [报告]
发表于 2004-08-17 23:41 |只看该作者

i=i+1 i++ ++I的区别? 请高手解释一下.

少用这些东东,累已累人,还是一步一步写清析!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP