问答详情
源自:6-6 PHP条件结构之switch…case…中的break

B例子解释看不懂

在B例子中,执行了第二个case , $sum变为20,由于没有break,继续执行第三个case,然后又执行default,$sum变为了40。 这个解释看不懂啊。 根据switch case语法,如果要执行case 3, num的值不应该是3才能执行吗?

提问者:财迷煎饼 2016-05-24 16:32

个回答

  • linmufengrand
    2016-05-24 17:28:26
    已采纳

    您好,按照我的理解,对于一个switch case语句,如果有一个分支条件满足后,如B例子中,执行了第二个case , $sum变为20,由于没有break,会继续执行下面的分支,注意:此时程序已经不执行判断第三个及以后的case分支中条件了,但会执行除此以外的所有可执行语句。也就是说,如果不希望程序在满足一个分枝后不继续执行下面的分支(如果有),则需要在该分支中的最后添加break;用以跳出分支。


    较为一般的形式为:

    switch(表达式){ 
        case 常量表达式1:  语句1;
        case 常量表达式2:  语句2;
        … 
        case 常量表达式n:  语句n;
        default:  语句n+1;
    }

    其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。若出现break;则跳出分支判断。

    参考资料:C语言switch语句的用法详解