求解if(!strcmp(s1,s2))的一个问题?

#include<stdio.h>
#include<string.h>
int main()
{
    char a1[80],a2[80],*s1=a1,*s2=a2;
    gets(s1);
    gets(s2);
    
    if(!strcmp(s1,s2))
        printf("*");
    else
        printf("#");

    printf("%d\n",strlen(strcat(s1,s2)));

    return 0;
}
如果我输入s1:book回车
          s2:book空格回车
s1与s2依次比较到最后,'\0'-' '不是小于0的吗,然后逻辑非,不是应该打印*这个出来的么?
阅读 3.6k
1 个回答

很简单,== 0 才是逻辑非,> 0< 0 都不是逻辑非。'\0'-' '确实小于0,但它不是逻辑非。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进