C中用while结束?

来源:百度知道 编辑:UC知道 时间:2024/06/19 20:58:40
自己写strcpy函数时:
strcpy(s,t)
char*s,*t;
{
while(*s++=*t++);
}
我只知道最后一步是吧*t中的全部内容送到*s中,可是为什么用while结束?
while不是用来进行循环判断的吗?

对头的。但是对于字符串比较特殊,因为字符串是以'\0'结束的,而'\0'的值实际上就是0.

而由于C是支持连等的,也就是说a = ( b = c )是可以的。
所以这个while循环最后一步当复制完'\0'之后不是刚刚好是while(0)吗?
这不就结束了吗?

这是字符串的特殊条件决定的,所以其它的情况不要这么用哦。

while( (*s++=*t++) != '\0')
这么写就好理解了,呵呵。

要知道'\0'的asc码是0。
如果这样写
while((*s++ = *t++) != '\0');
会不会更容易明白?