进行迭代时,如果有以下内容:
while(*pstring)
printf("%c", *pstring++);
似乎按照以下顺序进行操作:
while(*pstring) {
printf("%c", *pstring);
pstring++;
}
或者换句话说,像这样:
while(*pstring)
printf("%c", *(pstring++));
为什么它不像以下方式那样工作:
while(*pstring)
printf("%c", (*pstring)++);
最佳答案
在表达式*pstring++
中,您使用的是所谓的后增量运算符(变量名后的++)。这是先对表达式进行“求值”,然后对其进行递增。因此,在这种情况下,将*
运算符应用于递增的pstring
所指向的值。
另一方面,如果您使用了*++pstring
,则您使用的是预递增运算符:pstring
的值将在*
运算符使用其地址之前增加。
尝试一下,然后看一下(但要小心,但超出字符串末尾时,可能会遇到不确定的行为)!