这是什么意思? C编程无条件

时间:2015-09-02 08:23:57

标签: c

void strcpy(char *s, char *t)
{
    while ((*s++ = *t++) != '\0');
}

void strcpy(char *s, char *t)
{
    while (*s++ = *t++);
}

是一样的,这是什么意思?什么能消除这种情况呢?

3 个答案:

答案 0 :(得分:4)

表达式*s++ = *t++仍然有结果,并且该结果可以用作条件。更准确地说,结果将是复制的字符,并且您(应该)知道所有非零值都被认为是“真”,并且您也(应该)知道C中的字符串是终止

所以循环的作用是复制字符,直到到达字符串终止符。

答案 1 :(得分:-1)

条件是检查是否已到达字符串的结尾而不是超过它。如您所知,在C中,字符串以'\0'字符结束

答案 2 :(得分:-1)

检查是否已达到字符串\0 NUL的结尾,同时将*t的值复制到*s,然后递增两个指针。

要回答你的第二个问题,请考虑一下,

之间有什么区别
if(a != 0)

&安培;

if(a)

它只有两种编写相同代码的方式。我能想到的唯一区别是代码清晰度。第一个更冗长,更容易阅读,理解和维护。