注册 登录
编程论坛 C语言论坛

第15行如果字符串yhm和yhm1相等就返回0,然后if语句再判断0为假所以不输出printf中的东西对吗?求大神的解释!

不吃洋葱 发布于 2021-11-30 13:36, 1519 次点击
#include<stdio.h>
#include<string.h>
int main()
{
    char yhm[20]={"zzk"};
    char mima[20]={"yjx"};
    char yhm1[20],mima1[20];
    int i=0;
    while(i<3)
    {
        printf("输入用户名字符串:\n");
        gets(yhm1);
        printf("输入密码字符串:\n");
        gets(mima1);
        if(strcmp(yhm,yhm1))                       /*第15行*/
        {
            printf("用户名字符串输入错误!\n");
        }
        else
        {
            if(strcmp(mima,mima1))
            {
                printf("密码字符串输入错误!\n");
            }
            else
            {
                printf("欢迎使用!\n");
                break;
            }
        }
        i++;
        
    }
    if(i==3)
    {
        printf("输入字符串错误3次!\n");
    }
    return 0;
}
4 回复
#2
apull2021-11-30 13:52
一般0表示false,非0表示true。
#3
不吃洋葱2021-11-30 19:29
回复 2楼 apull
是不是如果break那个语句成立,整个程序就会结束?
#4
不会游泳的虾2021-12-02 09:34
第15行如果字符串yhm和yhm1相等就返回0,然后if语句再判断0为假,所以不输出printf中的东西对吗?楼主理解正确。
是不是如果break那个语句成立,整个程序就会结束。楼主理解正确。
#5
白白白小白2021-12-02 12:08
strcmp(S1,S2)是S1跟S2相比较,比较相同结果为0,if条件判断0为false,1为true,if(0)则不执行if语句,反之则执行else.
break是结束循环,还有一个类似的continue是结束这一轮的循环继续下一轮.
1