B例子解释看不懂
在B例子中,执行了第二个case , $sum变为20,由于没有break,继续执行第三个case,然后又执行default,$sum变为了40。 这个解释看不懂啊。 根据switch case语法,如果要执行case 3, num的值不应该是3才能执行吗?
在B例子中,执行了第二个case , $sum变为20,由于没有break,继续执行第三个case,然后又执行default,$sum变为了40。 这个解释看不懂啊。 根据switch case语法,如果要执行case 3, num的值不应该是3才能执行吗?
2016-05-24
您好,按照我的理解,对于一个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语句的用法详解
举报