带有非复合语句用例的C switch语句?

And*_*zos 6 c

可以使用非复合子语句编写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语句的非复合子语句?

bjs*_*123 1

代码中的第一个 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)