B例子解釋看不懂
在B例子中,執(zhí)行了第二個case , $sum變?yōu)?0,由于沒有break,繼續(xù)執(zhí)行第三個case,然后又執(zhí)行default,$sum變?yōu)榱?0。 這個解釋看不懂啊。 根據(jù)switch case語法,如果要執(zhí)行case 3, num的值不應(yīng)該是3才能執(zhí)行嗎?
在B例子中,執(zhí)行了第二個case , $sum變?yōu)?0,由于沒有break,繼續(xù)執(zhí)行第三個case,然后又執(zhí)行default,$sum變?yōu)榱?0。 這個解釋看不懂啊。 根據(jù)switch case語法,如果要執(zhí)行case 3, num的值不應(yīng)該是3才能執(zhí)行嗎?
2016-05-24
舉報
2016-05-24
您好,按照我的理解,對于一個switch case語句,如果有一個分支條件滿足后,如B例子中,執(zhí)行了第二個case , $sum變?yōu)?0,由于沒有break,會繼續(xù)執(zhí)行下面的分支,注意:此時程序已經(jīng)不執(zhí)行判斷第三個及以后的case分支中條件了,但會執(zhí)行除此以外的所有可執(zhí)行語句。也就是說,如果不希望程序在滿足一個分枝后不繼續(xù)執(zhí)行下面的分支(如果有),則需要在該分支中的最后添加break;用以跳出分支。
較為一般的形式為:
switch(表達式){?
? ? case 常量表達式1: ?語句1;
? ? case 常量表達式2: ?語句2;
? ? …?
? ? case 常量表達式n: ?語句n;
? ? default: ?語句n+1;
}
其語義是:計算表達式的值。 并逐個與其后的常量表達式值相比較,當(dāng)表達式的值與某個常量表達式的值相等時, 即執(zhí)行其后的語句,然后不再進行判斷,繼續(xù)執(zhí)行后面所有case后的語句。如表達式的值與所有case后的常量表達式均不相同時,則執(zhí)行default后的語句。若出現(xiàn)break;則跳出分支判斷。
參考資料:C語言switch語句的用法詳解