请问您这是c语言的一个问题,请问while ((*s1++ == *s2++ )&& (!*s1));这个代码它的运行顺序是什么呢?请您指点迷津,谢谢您!

请问您这是c语言的一个问题,请问while ((*s1++ == *s2++ )&& (!s1));这个代码它的运行顺序是什么呢?是(s1++ == *s2++ )先完全运行后,再运行(!*s1)?(!s1)是作为条件假跳出循环,还是作为条件真运行下面的代码呢?如果换作(--n)那么while ((s1++ == *s2++)&& (--n))它的运行顺序又是什么呢!请您指点迷津,谢谢您!

img

img

while ((*s1++ == *s2++ )&& (!s1));
相当于

while (s1 != '\0')
{
    if (*s1 != *s2) break;
    s1++;
    s2++;
}

那种写法纯属炫技,没有任何必要。