背景
学习C语言语法,switch时对于case的使用存在疑问,如下:
// 009.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdlib.h"
//使用它得加个头文件#include<stdlib.h>
int _tmain(int argc, _TCHAR* argv[])
{
int a = 1;
switch(a)
{
case 1:
printf("1111\n");
break;
case 2:
printf("2222\n");
break;
case 3:
printf("3333\n");
break;
default:
printf("????\n");
}
system("pause");
return 0;
}
以上代码输出1111,因为判断了符合1的情况。
当我们注释掉case1的braek后
case 1:
printf("1111\n");
//break;
输出1111和2222.
当注释掉case1和case2的break后
case 1:
printf("1111\n");
//break;
case 2:
printf("2222\n");
//break;
输出1111,2222和3333。
原因
这是switch语句的语法。除了符合case的判断外。
尽管只符合case1,我们单独注释break,也会继续执行case2和3的输出。
在C语言中,switch语句会匹配第一个符合条件的case,并且一旦进入某一个case,如果没有break语句,程序会继续执行下面所有case的语句,直到遇到break语句或者switch语句结束。所以即使没有break语句,程序也会继续执行下面的case语句。 |