一般必须在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时,结果为:
来源:https://blog.csdn.net/qq_37764129/article/details/98845149