【问题标题】:What does this mean? C programming no condition [duplicate]这是什么意思? C编程无条件[重复]
【发布时间】:2015-09-02 08:23:57
【问题描述】:
void strcpy(char *s, char *t)
{
    while ((*s++ = *t++) != '\0');
}

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

都是一样的,这是什么意思?删除条件有什么作用?

【问题讨论】:

    标签: c


    【解决方案1】:

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

    所以循环所做的就是复制字符直到到达字符串终止符。

    【讨论】:

      【解决方案2】:

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

      要回答您的第二个问题,请考虑这一点,

      有什么区别

      if(a != 0)
      

      &

      if(a)
      

      这只是编写相同代码的两种方式。我能想到的唯一区别是代码清晰。第一个更详细,更易于阅读、理解和维护。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2012-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-22
          • 2013-06-25
          • 1970-01-01
          • 2015-01-04
          相关资源
          最近更新 更多