C语言——悬空else问题

  很多初学者在学习C语言中,会遇到悬空else的问题,那么什么是悬空else,请开下面的代码

#include 
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
	else
		printf("haha\n");
	return 0;
}

那么请大家判断,输出的情况是如何——答案是什么也没输出

C语言——悬空else问题_第1张图片

大家可能认为会输出haha或者hehe,但其实不是,那为什么?什么都没输出。接下来我把代码调整一下 

#include 
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	return 0;
}

在这里告诉大家:如果有多个if和else,可以记住这一规则,else总是和最近的if匹配 。

那么上面的代码,因为初始化a=0 , 很显然a不等于1,所以下面的代码不执行,就什么也没有输出。

那么我们可以加个大括号,让意思表达的更加透彻

#include 
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("hehe\n");
	}
		else
			printf("haha\n");
	return 0;
}

这样是不是一眼就看出了,输出是haha了。 

那么这个其实就是代码的格式问题了,如果不想引起这种视觉的影响就需要规范的写代码 

你可能感兴趣的:(c语言,算法)