记住:若有多个if和else,可以记住,else总是跟最接近的if 匹配
#include <stdio.h>int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
程序运行的结果是错误的,啥也不输出
这样输入的话,什么也不会打印,因为else与第二个if进行配对了
这就是悬空else的问题,若有多个if和else,else总是和最接近的if相匹配
上述代码中,else总是与第一个if匹配,当if语句不成立时,自然想到的就是执行else字句,打印haha,但实际上else是与第二个if进行匹配的,这样后面的if...else语句是嵌套在第一个if语句中的,如果第一个if语句不成立,嵌套if和else语句就没机会执行了,整体都不打印 不好理解看这串代码
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
可以看到if嵌套进入了第一个if中,第一个if语句都不满足,怎么能进入if语句中并打印呢
所以,若希望else与第一个if匹配,可以这样修改
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}
只需带上适当的大括号,代码的逻辑就会更加的清晰,所以大家以后再写代码的时候要注意括号的使用,让代码的可读性更高