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

use*_*316 0 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;
}
Run Code Online (Sandbox Code Playgroud)

我只想要code part1执行的,但code part1 code part2code part3所有的执行,这是什么问题,如何解决?

Nem*_*ric 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;    
   }
}
Run Code Online (Sandbox Code Playgroud)

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