Switch statement 开关状态:是否每种情况都必须有断开线?

Switch statement 开关状态:是否每种情况都必须有断开线?,switch-statement,sonarqube,case,Switch Statement,Sonarqube,Case,我知道是这样,但我想知道这一点,因为使用SonarQube(代码分析程序)我读到: 当执行未在交换机案例结束时显式终止时,它将继续执行以下案例的语句虽然这有时是故意的,但通常是一种错误,会导致意外行为 所以。。我想不出你有意这么做的真实场景。有人举个例子吗 谢谢你的时间 注意。如果您希望在多个案例中执行相同的操作,而无需为每个案例编写相同的(重复的)代码,那么您可以使用此fall-through行为 switch (foo) { case 1: printf("just one\n");

我知道是这样,但我想知道这一点,因为使用SonarQube(代码分析程序)我读到:

当执行未在交换机案例结束时显式终止时,它将继续执行以下案例的语句虽然这有时是故意的,但通常是一种错误,会导致意外行为

所以。。我想不出你有意这么做的真实场景。有人举个例子吗

谢谢你的时间


注意。

如果您希望在多个案例中执行相同的操作,而无需为每个案例编写相同的(重复的)代码,那么您可以使用此fall-through行为

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;
}

如果您希望在多个情况下执行相同的操作,而无需为每个情况编写相同的(重复的)代码,那么您可以使用这种贯穿行为

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;
}

如果您希望在多个情况下执行相同的操作,而无需为每个情况编写相同的(重复的)代码,那么您可以使用这种贯穿行为

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;
}

如果您希望在多个情况下执行相同的操作,而无需为每个情况编写相同的(重复的)代码,那么您可以使用这种贯穿行为

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;
}

谢谢你的回答。。我只是想要一个真实的场景。但现在我明白了!对不起,现在咖啡太多了,没法回答。。我只是想要一个真实的场景。但现在我明白了!对不起,现在咖啡太多了,没法回答。。我只是想要一个真实的场景。但现在我明白了!对不起,现在咖啡太多了,没法回答。。我只是想要一个真实的场景。但现在我明白了!对不起,现在咖啡太多了