切换声明:每个案例是否必须始终有断行线?

时间:2015-09-08 14:43:40

标签: switch-statement sonarqube case

我知道确实如此,但我想知道这是因为使用 SonarQube (Code Analizer)我读到了:

  

如果在switch case结束时没有明确终止执行,它将继续执行以下情况的语句。 虽然这有时是故意的,但通常是一个导致意外行为的错误。

所以......我无法想象你有意这样做的真实场景。任何一个例子?

谢谢你的时间!

问候。

1 个答案:

答案 0 :(得分:3)

如果您希望针对多个案例执行相同的操作,而不为每个案例编写相同(重复)的代码,则可以使用此直通行为。

switch (foo) {
    case 1: printf("just one\n");  /* matches 1 only */
            break;
    case 2: printf("a couple\n");  /* matches 2 only */
            break;
    case 3:
    case 4:
    case 5: printf("a few\n");     /* matches for 3, 4, 5 */
            break;
    case 6:
    case 7:
    case 8:
    case 9: printf("several\n");   /* matches for 6, 7, 8, 9 */
            break;
    default: printf("a lot\n");    /* matches anything else */
            break;
}