c中的开关和外壳如何匹配?

时间:2013-09-23 11:14:33

标签: c switch-statement

我在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都已执行,问题是什么以及如何解决?

3 个答案:

答案 0 :(得分: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语句的末尾。

答案 1 :(得分:1)

你必须在每个部分之后添加'break'。然后只有当第1部分满足然后它执行part1然后终止。否则所有情况都将被执行

答案 2 :(得分:0)

C99 standards文件,第6.8.4.2节关于开关和案例工作的简要说明。你也许可以在语法/语义上正确引用它。