wait 发表于 2016-1-17 22:53:05

(C/C++)switch语句中的case结尾是否必须添加break语句

    一般必须在case语句结尾添加break语句。因为一旦通过switch语句确定了入口点,从入口点的case语句开始一直往下执行,除非遇到关键字break,否则会执行满足这个case之后的其他case语句,直到switch结束或者遇到break为止。如果在switch中省略了break语句,那么匹配的case值后的所有情况(包括default情况)都会被执行。    程序代码如下所示:<font size="3">#include <stdio.h >

int main( )
{
             int i;
             for(i=0;i<3;i++)
             {
                           switch (i)
                           {
                                             case 0:
                                                             printf("%d\n",i);
                                             case 2:
                                                             printf("%d\n",i);
                                             default :
                                                             printf("%d\n",i);
                           }
             }
             return 0;
}</font>    输出为:000122      case 0的时候执行3次打印,case 1的时候执行一次defalut,case 2的时候执行两次打印。如果将case 2后面添加break语句,则最后输出为0012,因为此时case 0 执行两次,case1执行一次defalut,case 2执行一次。    需要注意的是,switch(c) 语句中c可以是int、long、char、unsignedint 等类型,唯独不可以是float类型。
页: [1]
查看完整版本: (C/C++)switch语句中的case结尾是否必须添加break语句