一.? switch語句
1.1 語法結構如下:
switch (表達式) {case 常量1:// 代碼塊1break;case 常量2:// 代碼塊2break;default:// 默認代碼塊
}
1.2 注意 :
- 表達式必須是整型或枚舉類型(如
int
、char
)。 case
后的常量必須與表達式類型兼容。- 學會使用
break
。 default
為可選分支,當所有case
不匹配時執行。
二. switch與if-else的對比
適用場景
switch
適合多分支且條件為離散值(如枚舉、固定常量)。if-else
更適合范圍判斷或復雜邏輯(如x > 10 && y < 20
)。
性能差異
switch
可能被優化為跳轉表(效率高),而if-else
需逐條判斷。
2.1 注意事項
穿透問題
省略break
會導致代碼繼續執行后續case
,需謹慎使用。例如:switch (x) {case 1: cout << "1"; // 無break,繼續執行case 2case 2: cout << "2"; break; // 輸出"12" }
變量作用域(稍微復雜的使用)
case
塊內定義的變量需用花括號限定作用域,否則會報錯:switch (x) {case 1: {int y = 10; // 正確:作用域限于當前casebreak;} }
default分支
即使沒有匹配項,也建議添加default
以處理意外情況,增強魯棒性。
三. 具體案例練習:
3.1 判斷星期幾的輸出:
int day = 3;
switch (day) {case 1: cout << "Monday"; break;case 2: cout << "Tuesday"; break;case 3: cout << "Wednesday"; break; // 輸出"Wednesday"default: cout << "Invalid day";
}
3.2 常見錯誤
- 在
case
中聲明變量未加花括號。 - 遺漏
break
導致意外穿透。 - 使用浮點數或字符串作為
switch
表達式(不合法)。