我在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 part2
和code part3
都已执行,问题是什么以及如何解决?
答案 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节关于开关和案例工作的简要说明。你也许可以在语法/语义上正确引用它。