搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 【求助】解释下 x=(*p1)++ 是什么意思?
标题:
【求助】解释下 x=(*p1)++ 是什么意思?
只看楼主
吐歌
等 级:
论坛游民
帖 子:43
专家分:19
注 册:2014-10-19
结帖率:
100%
楼主
问题点数:0 回复次数:7
【求助】解释下 x=(*p1)++ 是什么意思?
x=*p++;是先算p++后算*,是优先级的问题,
但是 x=(*p1)++;又是什么意思呢?
搜索更多相关主题的帖子:
优先级
2014-11-27 13:15
wp231957
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册:2012-10-18
第
2
楼
得分:0
研究这玩意干嘛 也不能当饭吃
DO IT YOURSELF !
2014-11-27 13:45
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
3
楼
得分:0
x = (*p)++;
等效於:
x = *p;
*p = *p + 1;
理解的方法是:作變量代換,令m = *p,則原代碼實質爲x = m++。
授人以渔,不授人以鱼。
2014-11-27 19:10
猫林heart
等 级:
职业侠客
威 望:
1
帖 子:60
专家分:390
注 册:2014-9-26
第
4
楼
得分:0
回复 3 楼 TonyDeng
是不是也等价于 x += *p呢?
2014-11-27 19:14
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
5
楼
得分:0
以下是引用
猫林heart
在2014-11-27 19:14:55的发言:
是不是也等价于 x += *p呢?
不等。x += i的意思,是x = x + i,而這裏是x = i++。
授人以渔,不授人以鱼。
2014-11-27 19:17
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
6
楼
得分:0
注意:凡是++/--,都等价于两行,自加自减符号在后的,则自加或自减运算在后,故以后缀形式表现;自加自减符号在前的,运算在前。当代码行只有i++这样形式的时候,编译器视情形处理为++i的高效形式。也就是说,尽可能地使用++i,而非i++,后者是逻辑上分析自加操作应在后进行时使用的,不要乱写。通常,在没有把握的时候,宁可直接把代码写成两行,也不要冒险,这不会浪费效率,因为编译器会替你分析是否能把两行合并成一行,你写对自己的代码就好了,其余的交给编译器,不要自己做机器。
[
本帖最后由 TonyDeng 于 2014-11-27 19:45 编辑
]
授人以渔,不授人以鱼。
2014-11-27 19:26
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
7
楼
得分:0
其实(*p)++这样的形式,是存在隐患的:当解引用*p所对应的数据不是左值时,就无法执行++运算。
授人以渔,不授人以鱼。
2014-11-27 19:50
吐歌
等 级:
论坛游民
帖 子:43
专家分:19
注 册:2014-10-19
第
8
楼
得分:0
Thank everyone!
||||||||||||^_^COMEONFORGOODLIFE^_^||||||||||||
2014-11-29 22:24
8
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-439240-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.363886 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved