可以使用非复合子语句编写C开关语句:
int x = 2;
int y = 3;
int main()
{
switch (x)
y++; // ok
switch (x)
case 2: y++; // ok
}
这有什么用例吗?也就是说,是否有理由使用switch语句的非复合子语句?
答案 0 :(得分:1)
代码中的第一个开关块没有做任何事情。
当评估switch语句表达式时,将忽略在匹配的case标签或default label出现之前存在的源代码。因此,它不会在下面的程序中打印“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;
}
输出:
In case 2
答案 1 :(得分:1)
“控制传递给case
常量表达式与switch
(表达式)的值匹配的语句。[...] 执行语句正文从所选语句开始,一直持续到正文结束或直到break
语句将控件移出正文。“ (http://msdn.microsoft.com/)
我认为第一个switch
没有做任何事情......当我编译它时,y
为4,这意味着它只增加了一次。