while(*s ++ =*t ++); 在C.

use*_*974 1 c

在K&R的C编程语言中,我继续看到代码
while(*s++ = *t++) ;,这只是第5章指针中的一个例子.这对我来说完全令人困惑,因为我虽然while循环如下:

while (something is true)
    do what your assigned to do
Run Code Online (Sandbox Code Playgroud)

是某种特殊情况与C或我错过了什么?作为初学C程序员,这只是我的头脑.关于如何while(*s++ = *t++) ;工作的任何解释都会很棒.

我不会对表达的含义感到困惑(*s++ = *t++).我只是想知道为什么while循环体中没有任何东西.

Luk*_*ský 7

你可以想到这样的代码,如果打破了最简单的命令:

while (1) {
    char c = *t;
    *s = c;
    s++;
    t++;
    if (!c) {
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

要解释为什么它的工作原理,可以分配*t*s再评估结果(a=b评估为被分配的值).如果它不为零,则继续.如果它为零,则结束循环.