0

我在c中有以下代码:

typedef enum
{
  Filter_NAME,
  Filter_NAME_2,
  Filter_NAME_3         
} Filter;


void printInfo(int filter)
{
   switch()
   {
      case Filter_NAME:
         // code part1
      case Filter_NAME_2:
         // code part2
      case Filter_NAME_3:
         // code part3
      default:
         return;    
   }
}

void main()
{
   int filter = Filter_NAME;
   printInfo(filter);
   return 0;
}

我只想要执行,code part1但全部执行,问题是什么以及如何解决?code part1 code part2code part3

4

3 回答 3

11

您需要break在每个case块之后添加。

void printInfo(int filter)
{
   switch(filter)
   {
      case Filter_NAME:
         // code part1
         break;
      case Filter_NAME_2:
         // code part2
         break;
      case Filter_NAME_3:
         // code part3
         break;
      default:
         return;    
   }
}

这将停止传播到其他 case 块,并将跳转到switch语句的末尾。

于 2013-09-23T11:15:05.017 回答
1

您必须在每个部分之后添加“中断”。只有当第 1 部分满足时,它才会执行第 1 部分然后终止。否则将执行所有案例

于 2013-09-23T13:16:18.873 回答
0

C99 标准文档第6.8.4.2 节简要介绍了开关和外壳的工作。您也许可以参考语法/语义正确的内容。

于 2013-09-23T13:02:34.060 回答