*p++=i怎么理解

问题描述:

*p++=i怎么理解
1个回答 分类:综合 2014-10-07

问题解答:

我来补答
因为++和*优先级是相同的(都是从右往左结合的),故该语句可写作(*p)++,虽有画蛇添足之嫌,但从清晰度来说,后者要好得多.
表达式里的自增、自减操作(附加效应)对不同编译器而言结果可能是不同的,这是因为ISO和ANSI并没有给出明确规定,关于这个方面,只规定,在语句*p++ = i;执行完毕(一个时间点)后,p的内容增1,至于等效功能为p = i;p = p + 1,还是p = p + 1;p = i;,对于使用者来说完全是不可预知的,就这一点来说,不同的编译器在不同情况下也可能使用不同的处理方法,这取决于编译器编织者的意愿.
再问: 从右往左不是*(p++)么
再答: 结合性和优先级的纠结由来已久,如果有可能你可以看看《C缺陷与陷阱》。为了加深印象,下面是字符串拷贝函数,你体会一下。 char *StrCpy(char *d, char *s) { while(*d++ = *s++); return d; }
 
 
展开全文阅读
剩余:2000
上一页:例2的第一问