可以使用非复合子语句编写C switch语句:
int x = 2;
int y = 3;
int main()
{
switch (x)
y++; // ok
switch (x)
case 2: y++; // ok
}
Run Code Online (Sandbox Code Playgroud)
这有什么用例吗?也就是说,是否有理由使用switch语句的非复合子语句?
代码中的第一个 switch 块不执行任何操作。
当计算 switch 语句表达式时,出现匹配的 case 标签或 default 标签之前存在的源代码将被忽略。因此,它不会在下面的程序中打印语句“Before case”。
int x = 2;
int y = 3;
int main()
{
switch (x)
{
y++;
printf("Before case");
case 2:
printf("In case 2");
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
In case 2
Run Code Online (Sandbox Code Playgroud)