您的位置:首页 > 其它

悬挂“else”

2016-03-10 00:03 106 查看
else匹配规则:与它上面的距离它最近的且在同一级语句块的一个未与else匹配的if语句匹配

初接触C语言的同志可能会犯下面这种错误

if(x == 0
if(y == 0)
{
printf("这里有两个if语句\n");
}
else
{
printf("只有一个else语句,它将要与谁匹配呢?\n");
}


本意是想把else与第一个if语句匹配,但是因为第二个if语句也没有与之匹配的else语句,所以这个else会被编译器“判给”第二格if语句

解决这种错误的方式也很简单,每当写一个if()语句块时,都在后面跟一对大括号,把if()语句块的内容写在大括号里面,还有就是当if()语句块的逻辑写完了之后,立马在后面跟一个else()语句块,即使else()什么操作也不需要做,仅仅是一个空语句。

#include<stdio.h>

int main()
{
int a = 10;
int b = 0;
if (a != 0)
{
printf("a != 0\n");
if (b != 0)
{
printf("b != 0\n");
}
}
else
{
printf("a = 0\n");
}
system("pause");
return 0;
}


上面的例子中把第二个if()语句块封装在第一个if()语句块内,那么因为仅有的一个else()语句块与第一个if()语句块在同一个语句块(大括号里),所以他俩会匹配成功,因此,即使b = 0,第二个if()语句块的条件不满足,也不会执行else()语句块的语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: