进行迭代时,如果有以下内容:

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的值将在*运算符使用其地址之前增加。

尝试一下,然后看一下(但要小心,但超出字符串末尾时,可能会遇到不确定的行为)!

10-05 18:25