for循环中多个增量的含义是什么?

Mon*_*tao 2 c for-loop

我正在阅读代码,我遇到了这段代码:

for (p = prevp->s.ptr; ; prevp = p, p = p->s.ptr)

我该如何解读?for循环有多个增量吗?我以前见过多个条件,用逗号分隔,但我之前从未见过多个增量.

Gle*_*ith 5

在这种情况下,在循环的每次迭代中,都会调用这两个语句.它似乎是某种链表.如果将其作为while循环编写,您可以清楚地看到它是如何工作的:

p = prevp->s.ptr;
while (true) {
    //Loop body here

    prevp = p;
    p = p->s.ptr;
}
Run Code Online (Sandbox Code Playgroud)