'\ 0'相关问题

2 c++ string

看看这个循环将一个c-string复制到另一个c-string:

void strcpyr(char *s, char *t)
{
    while(*s++=*t++)// Why does this work?
        ;
}
Run Code Online (Sandbox Code Playgroud)

为什么我们不在while循环中检查'\ 0'字符,像这样?

while((*s++=*r++)!='\0')..
Run Code Online (Sandbox Code Playgroud)

第一个循环是如何终止的?

Fer*_*cio 12

语句*s ++ =*t ++不仅将下一个字符从t分配给s,还返回当前值*t作为表达式的结果.while循环终止于任何false值,包括'\ 0'.

这样想吧.如果你这样做:

char c = *s++ = *t++;
Run Code Online (Sandbox Code Playgroud)

除了将char从*t复制到*s并递增两者之外,它还将c设置为当前值*t.