| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖
标题:++i++;错在哪里?
只看楼主 加入收藏
jack222
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2008-6-16
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:15 
++i++;错在哪里?
如题,想了n久想不通,高手解释下。
2011-05-11 16:56
w123012306
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:蜘蛛侠
威 望:4
帖 子:307
专家分:1180
注 册:2010-4-22
收藏
得分:1 
是(++i)++,还是++(i++)呢???

楼上,楼下的一定要幸福开心哦!
2011-05-11 16:59
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:1 
invalid lvalue in increment
PS:先看编译器说什么

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-11 17:02
饭桶
Rank: 6Rank: 6
等 级:侠之大者
帖 子:165
专家分:422
注 册:2011-4-5
收藏
得分:1 
++(后缀)的优先级比++(前缀)高,所以我认为是++(i++)

人得一生得奋斗!
2011-05-11 18:22
jack222
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2008-6-16
收藏
得分:0 
编译报错,不知道为什么?
2011-05-11 18:25
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:1 
表达式是从右到左结合的,所以应该是++(i++)没错,但是i++返回的是值(跟函数一样),比如一个函数是求两个数中的最大数max(), 那么我们能写max()++;或++max()吗?当然是不能的。

My life is brilliant
2011-05-11 18:48
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:1 
++  --  都是从右往左的

                                         
===========深入<----------------->浅出============
2011-05-11 18:52
oszc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:111
专家分:154
注 册:2011-4-15
收藏
得分:1 
我的理解后加(i++)数值未返回 ---->先加(++i)找不到要加的值
2011-05-11 18:59
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
建议楼上的去看看C Primer Plus,相同优先级的运算符是从右向左结合的。
收到的鲜花
  • jack2222011-05-12 21:17 送鲜花  3朵   附言:我很赞同

My life is brilliant
2011-05-11 19:03
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:1 
一般表达式的话那么是先看优先级,优先级相同那么然后再看结合性,而结合性大多数人不太会去记忆的,所以这是我们常常用括号来避免二义性,注重程序通用性。
但是你这个++i++却跟前面我说的没太大关系,你的++i++ 与 ++(i++)是一个意思。
后置++优先级是高于前置++的,那么自然是先i++,i++返回的是++之前的一个temp值,我相信这个值在编译时候应该是这么设置一个变量的,下面两个应该是等价的。
即i++ 等价于 int temp=i;i++;//我个人理解
而temp是不具有左值功能的,只能作为右值使用,而对于右值进进行前置++操作是语法无法忍受的。

这里只是一个左值和右值的问题。

不好意思,记成c++的优先级了,那么c中前置+和后置+优先级相等,那么就按结合性来了。

[ 本帖最后由 baobaoisme 于 2011-5-11 22:38 编辑 ]
2011-05-11 22:08
快速回复:++i++;错在哪里?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012717 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved