m0_74217558 2023-05-14 21:43 采纳率: 100%
浏览 27
已结题

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

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

img

img

  • 写回答

1条回答 默认 最新

  • threenewbee 2023-05-14 21:54
    关注

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 修改了问题 5月14日
  • 创建了问题 5月14日