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
舉報
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語句的用法詳解