在C语言中,else不是与最近的一个if结合么?为何小弟我这里不是
在C语言中,else不是与最近的一个if结合么?为何我这里不是
在执行过程中,总会执行到day=28,输出结果于是总是28.
这段代码来自《C语言编程技巧分析》(清华大学出版社 高禹 主编 2014年1月第一版)
不要改成if-else if,我会那种方法,只想知道这段代码为何总执行else
------解决思路----------------------
当month == 1,3,4,5,6,7,8,9,10,11,12时
------解决思路----------------------
确实是只和最近的if结合,所以你的day只能是29,或者28。
前面的几个if全部作废了。
即使前面是赋值31,后面的if和else会重新赋值
#include<stdio.h>
int main(){
int year,month,day=0;
printf("input year,month:\n");
scanf("%d,%d",&year,&month);
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day=31;
if(month==4||month==6||month==9||month==11)
day=30;
if(month==2 && (year%4==0 && year%100!=0 || year%400==0))
day=29;
else day=28;
printf("days=%d",day);
return 0;
}
在执行过程中,总会执行到day=28,输出结果于是总是28.
这段代码来自《C语言编程技巧分析》(清华大学出版社 高禹 主编 2014年1月第一版)
不要改成if-else if,我会那种方法,只想知道这段代码为何总执行else
------解决思路----------------------
当month == 1,3,4,5,6,7,8,9,10,11,12时
if(month==2 && (year%4==0 && year%100!=0条件不满足就执行else语句
------解决思路----------------------
year%400==0))
day=28;
------解决思路----------------------
确实是只和最近的if结合,所以你的day只能是29,或者28。
前面的几个if全部作废了。
即使前面是赋值31,后面的if和else会重新赋值