微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 if 链不在这段代码中开始?

如何解决为什么 if 链不在这段代码中开始?

我正在尝试创建一个程序,在它读取的日期之后打印第二天。 我不明白为什么当程序在终端上运行时,它会在显示“日期为 %d/%d/%d\n”时结束,并且 if 链没有在程序中启动。 我试图在每个 if 之后插入一个 printf 以查看它是否有效,但是由于它之前停止过,我也无法查看是否存在一些逻辑或语法问题,并且我无法进行调试。 所以如果在第一个 if 之后我们会出现一些逻辑错误,我很抱歉,但我在终端上看不到它! 谁能解释一下为什么我有这个问题? 提前致谢!

#include <stdio.h>
int main (void) {
int d,m,y,days;
double leap;
printf("Insert day: \n");
scanf("%d",&d);
printf("Insert month: \n");
scanf("%d",&m);
printf("Insert year: \n");
scanf("%d",&y);
printf("Date is %d/%d/%d\n",d,y);

if  (m==1 || m==3 || m==5 || m==7 || m==8 || m==10) {
    days==31;
    if  (d<days) {
        d=d+1;
        printf("The next day is %d/%d/%d!\n",y);
    }
    else if (d==days) {
        d==1;
        m=m+1;
        printf("The next day is %d/%d/%d!\n",y);
    }
}
else if (m==12) {
    days==31;
    if  (d<days) {
        d=d+1;
        printf("The next day is %d/%d/%d!\n",y);
    }
    else if (d==days) {
        d==1;
        m==1;
        y=y+1;
        printf("The next day is %d/%d/%d!\n",y);
    }
}
else if (m==4 || m==6 || m==9 || m==11) {
    days==30;
    if (d<days) {
        d=d+1;
        printf("The next day is %d/%d/%d!\n",y);
    }
    else if (d==days) {
        m=m+1;
        printf("The next day is %d/%d/%d!\n",y);
    }
}
else if (m==2) {
    leap=(y)%(4);
    if  (leap==0) {
        days==29;
        if (d==days) {
            d==1;
            m=m+1;
            printf("The next day is %d/%d/%d!\n",y);
        }
        else if (d<days) {
            d=d+1;
            printf("The next day is %d/%d/%d!\n",y);
        }
        else {
            days==28;

            if (d==days) {
                d==1;
                m=m+1;
                printf("The next day is %d/%d/%d!\n",y);
            }
            else if (d==days) {
                d=d+1;
                printf("The next day is %d/%d/%d!\n",y);
            }
        }
    }
}
else if (m>12) {
    printf ("The date doesn't exist!\n");
}

}

解决方法

在 C 中,运算符 == 用于比较,而不是赋值。因此,将预期分配中的 == 更改为 =

当您编译 C 程序时,您应该始终启用警告并仔细阅读它们。例如,使用 GCC 编译器和选项 -Wall 您将看到类似

的警告
warning: statement with no effect [-Wunused-value]
days == 30;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。