*(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前的副本
[解决办法]
一样的
[解决办法]