| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2404 人关注过本帖
标题:【求助】解释下 x=(*p1)++ 是什么意思?
只看楼主 加入收藏
吐歌
Rank: 2
等 级:论坛游民
帖 子:43
专家分:19
注 册:2014-10-19
结帖率:100%
收藏
 问题点数:0 回复次数:7 
【求助】解释下 x=(*p1)++ 是什么意思?
x=*p++;是先算p++后算*,是优先级的问题,
但是 x=(*p1)++;又是什么意思呢?
搜索更多相关主题的帖子: 优先级 
2014-11-27 13:15
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
研究这玩意干嘛  也不能当饭吃

DO IT YOURSELF !
2014-11-27 13:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
x = (*p)++;
等效於:
x = *p;
*p = *p + 1;

理解的方法是:作變量代換,令m = *p,則原代碼實質爲x = m++。

授人以渔,不授人以鱼。
2014-11-27 19:10
猫林heart
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:60
专家分:390
注 册:2014-9-26
收藏
得分:0 
回复 3 楼 TonyDeng
是不是也等价于 x += *p呢?
2014-11-27 19:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用猫林heart在2014-11-27 19:14:55的发言:

是不是也等价于 x += *p呢?

不等。x += i的意思,是x = x + i,而這裏是x = i++。

授人以渔,不授人以鱼。
2014-11-27 19:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
注意:凡是++/--,都等价于两行,自加自减符号在后的,则自加或自减运算在后,故以后缀形式表现;自加自减符号在前的,运算在前。当代码行只有i++这样形式的时候,编译器视情形处理为++i的高效形式。也就是说,尽可能地使用++i,而非i++,后者是逻辑上分析自加操作应在后进行时使用的,不要乱写。通常,在没有把握的时候,宁可直接把代码写成两行,也不要冒险,这不会浪费效率,因为编译器会替你分析是否能把两行合并成一行,你写对自己的代码就好了,其余的交给编译器,不要自己做机器。


[ 本帖最后由 TonyDeng 于 2014-11-27 19:45 编辑 ]

授人以渔,不授人以鱼。
2014-11-27 19:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
其实(*p)++这样的形式,是存在隐患的:当解引用*p所对应的数据不是左值时,就无法执行++运算。

授人以渔,不授人以鱼。
2014-11-27 19:50
吐歌
Rank: 2
等 级:论坛游民
帖 子:43
专家分:19
注 册:2014-10-19
收藏
得分:0 
Thank everyone!

||||||||||||^_^COMEONFORGOODLIFE^_^||||||||||||
2014-11-29 22:24
快速回复:【求助】解释下 x=(*p1)++ 是什么意思?
数据加载中...
 
   



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

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