面试复习(二)——C/C++关键字:switch语句中的case结尾是否必须添加break语句

落花浮王杯 提交于 2019-11-26 12:25:24

        一般必须在case语句结尾添加break语句。因为一旦通过switch语句确定了入口点,从入口点的case语句开始一直往下执行,除非遇到关键字break,否则会继续执行满足这个case之后的其他case语句,直到switch结束或者遇到break为止。如果在switch中省略了break语句,那么匹配的case值后面的所有情况(包括default情况)都会被执行。比如:

#include <iostream>

using namespace std;

int main()
{
	int a;
	for (a = 0; a < 3; a++)
	{
		switch (a) 
		{
		case 0:
			printf("a=%d\n", a);
		case 2:
			printf("b=%d\n", a);
		default:
			printf("others=%d\n", a);
		}
	}
	return 0;	
}

                                                               

加了break以后:

#include <iostream>

using namespace std;

int main()
{
	int a;
	for (a = 0; a < 3; a++)
	{
		switch (a) 
		{
		case 0:
			printf("a=%d\n", a);
			break;
		case 2:
			printf("b=%d\n", a);
			break;
		default:
			printf("others=%d\n", a);
			break;
		}
	}
	return 0;
	
}

                                                                    

 

补充

break和continue的区别:

continue:终止本次循环的执行,即跳过当前这次循环中continue语句后面尚未执行的语句,接着进行下一次循环条件的判断。

break:1) break在循环体内时,起结束整个循环的作用,直接转向循环语句下面的语句。

2)当break出现在switch语句中时,其作用是跳出该case/switch语句体。如上例所示。

#include <iostream>

using namespace std;

int main()
{
	int a = 5, n = 0;
	while(a--)
	{
		cout << "a0=" << a << endl;
		if (a == 4)
            //break;
			continue;

		else if (a == 2)
			n = 7;			
	}
	n = n + 2;
	cout << "a = " << a << endl;
	cout << "n = " << n << endl;
	return 0;
}

当运行continue时,结果为:

当运行break时,结果为:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!