可能重复:
switch语句中第一个'case'之前的代码
我在C中有以下代码集:
void isFindValue(int value1, int value2)
{
switch (value1)
{
case 1:
printf("value1 is found!\n");
break;
case 2:
printf("value1 is found!\n");
break;
case 3:
switch(value2)
{
printf("aaaaaaaaaaaaa\n");
case 6:
printf("bbbbbbbbbbbb\n");
printf("value2 is found!\n");
break;
}
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
如果我按照isFindValue(3,6)调用函数; bbbbbbbbbbbb显示的printf ,但aaaaaaaaaaaaa不是,为什么会这样?我们不应该在案件之前做点什么吗?
小智 6
因为switch ()使用标签.它跳转到满足条件的标签.到达时
switch(value2) {
printf("aaaaaaaaaaaaa\n");
case 6:
Run Code Online (Sandbox Code Playgroud)
控制流立即跳转到标签,case 6:以便它跳过调用printf().
解决方案是将其正确放置在内部开关之外:
case 3:
printf("aaaaa\n");
switch (value2) {
Run Code Online (Sandbox Code Playgroud)
等等