c语言switch不会呀

img


请问亲们为什么是c=5而不是c=4?它不是不管case和default的顺序怎样都先执行case的吗?

因为 default 后边没有 break ,会接着走 case 2
3 在进行完两次 ++ 后,为 5

case 之后需要 break,否则会执行后续 case.

case 1不满足 进入 default 然后c++,因为没有break,又执行case 2,c++,也就是c++了两次,所以结果是5

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7801844
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料中的内容以及Switch语句的相关规则,可以得到以下解决方案:

    首先需要明确的是,Switch语句执行时会先读取表达式的值,然后根据表达式的值来匹配相应的Case语句执行其中的代码块。因此,Case语句中的值必须是常量,而不是变量或表达式。如果Case语句中的值不是一个常量,则会报编译时错误。另外,Switch语句中的各个Case语句的顺序并不会影响表达式的值的匹配和执行顺序。

    在本例中,代码中出现了 c=5 的情况。这意味着在Switch语句执行之前,变量 c 的值就已经被赋为了 5。因此,Switch语句中表达式的值匹配到了其中一个Case语句的值为 5 的情况,从而执行了相应的代码块。

    因此,针对本例中的问题,可以得出结论:变量 c 在Switch语句执行之前就已经赋值为了 5。Switch语句中各个Case语句的排列顺序不会影响表达式的值的匹配和执行顺序。

    代码示例:

    #include <stdio.h>
    
    int main() {
        int c = 5; // 假设变量 c 的初始值为 5
        switch (c) {
            case 4:
                printf("This is case 4.\n");
                break;
            case 5:
                printf("This is case 5.\n");
                break;
            case 6:
                printf("This is case 6.\n");
                break;
            default:
                printf("This is the default case.\n");
                break;
        }
        return 0;
    }
    

    输出结果:

    This is case 5.