c中的if-else

来源:百度知道 编辑:UC知道 时间:2024/06/14 15:25:20
求闰年时,如果用:
if ((year%4 == 0 && year%100 != 0) || year%400 == 0)
if (day < 1 || day > 29 ) return 0;
else
if (day < 1 || day > 28 ) return 0;
那么2008年2月就没有29日,如果用:
if ((year%4 == 0 && year%100 != 0) || year%400 == 0) {
if (day < 1 || day > 29 ) return 0;
}
else {
if (day < 1 || day > 28 ) return 0;
}
就可以得到正确的结果,上面错误的if-else中都是一个if对应一个else,为什么还会出错呢?是因为那个else会和它最近的if结合?请指点!谢谢!

是的,C语言中规定 else与其最近的if结合。

if语句的嵌套包含一个或者多个if语句,一般形式如下:
内嵌:
if()
if () 语句1
else() 语句2
else
if() 语句3
else() 语句4
应当注意If与else的配对关系。else 总算与它上面的最近的未配对的if配对。
如果if 与else 的数目不一样,为实现程序设计者的企图,可以加花括号来确定配对关系。例如:
if ()
{
if() 语句1
}
else 语句2
这时“{}”限定了内嵌if 语句的内容,因此else与第一个if 配对。
为了逻辑清楚,避免出错,所以尽量写你所说的最后的else,使else 和if能够配对,这样的程序逻辑性更高,不容易出错。

是的,else当然是和最近的if结合