C - 指针算术

she*_*lbc 3 c pointers

在以下代码中:

int strlen(char *s){
    char *p = s;

    while(*p++ != '\0');

    return p - s;
}
Run Code Online (Sandbox Code Playgroud)

为什么上述评估与此不同:

int strlen(char *s){
    char *p = s;

    while(*p != '\0') p++;

    return p - s;
}
Run Code Online (Sandbox Code Playgroud)

我的理解是表达式将首先进行评估,然后进行增量.

Ani*_*nge 10

p无论while()条件是真还是假,第一个代码都会递增.

在第二段代码中,p如果while条件为真,则仅增加.