首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

*(p++)和*p++一样吗?解决思路

2012-05-13 
*(p++)和*p++一样吗?用了2年C#,C已经忘记差不多了。本以为没有括号时,*结合性高,先和p结合,*p++的值是*p的

*(p++)和*p++一样吗?
用了2年C#,C已经忘记差不多了。
本以为没有括号时,*结合性高,先和p结合,*p++的值是*p的值,然后p++;有括号时,括号内优先级高,先计算p++,然后再取值,表达式的值是*(p+1),但是在VS2010中调试发现我的结论是错的,求解释。

[解决办法]
这里不是优先级的问题,而是 前++ 还是 后++ 的问题
*(p++) 既然是 后++ ,那就是先用p的值取出*p,然后给p加1。括号没用
[解决办法]
后自增操作的优先级高于解引用操作,所以*p++和*(p++)等效。
子表达式p++使p加1,然后返回p原值的副本作为该表达式的结果,
因此2中解引用操作符*的操作数都是p未加1前的副本
[解决办法]
一样的
[解决办法]

探讨
那么问一下,前++运算符,是立即起作用的,后++运算符,在何时起作用?是遇到分号后、一行语句结束,才自增?

热点排行