y = x ( -5 < x < 0 )
y = x - 1 ( x = 0 )
y = x - 1 ( 0 < x < 10 )
if (x > -5 && x < 0) y = x;
if (x == 0) y = x - 1;
if (x > 0 && x < 10) y = x - 1;
if (x > -5 && x < 0) y = x;
else if (x >= 0 && x < 10) y = x - 1;
else y = 0; // 超出範圍默認處理
if (x >= -5 && x < 10) {
if (x < 0) y = x;
else y = x - 1; // x==0 或 x>0 同樣處理
}
int zone;
if (x > -5 && x < 0) zone = 1;
else if (x >= 0 && x < 10) zone = 2;
else zone = 0;
switch (zone) {
case 1: y = x; break;
case 2: y = x - 1; break;
default: y = 0;
}
| 寫法 | 優點 | 缺點 |
|---|---|---|
| 獨立 if | 直觀 | 條件重複求值,效率低 |
| if-else if | 短路、互斥、可讀性好 | 區間多時代碼長 |
| 嵌套 if | 邏輯層次清晰 | 過深難維護 |
| switch | 跳轉表優化、結構清晰 | 需將區間離散化為整數 |
工程建議: 區間判斷優先用 if-else if;離散值枚舉用 switch;嵌套不超 3 層。