本文整理 C 語言進階基礎階段的六大核心知識點,涵蓋布林型別、關係運算子、邏輯運算子、if 分支、枚舉型別、switch 多重分支,為後續程式控制流程奠基。
bool(C99 前),常用 int 模擬:非 0 為真,0 為假<stdbool.h> 提供 true(1)、false(0)int flag = 1; if (flag) ...用於比較兩運算元,結果為布林值(0/1):
| 運算子 | 含義 | 範例 |
|---|---|---|
| > | 大於 | a > b |
| >= | 大於等於 | a >= b |
| < | 小於 | a < b |
| <= | 小於等於 | a <= b |
| == | 等於 | a == b |
| != | 不等於 | a != b |
注意:== 判斷相等,= 為指派,極易混淆。
| 運算子 | 名稱 | 真值表 | 短路特性 |
|---|---|---|---|
| && | 邏輯與 | 同真才真,一假則假 | 左運算元為假 → 右運算元不求值 |
| || | 邏輯或 | 同假才假,一真即真 | 左運算元為真 → 右運算元不求值 |
| ! | 邏輯非 | 真變假,假變真 | 單目運算子,無短路 |
短路特性常用於防禦性程式設計:if (p != NULL && p->val > 0)
// 1. 單向分支
if (條件) { 陳述句; }
// 2. 雙向分支
if (條件) { 陳述句1; } else { 陳述句2; }
// 3. 多向分支
if (條件1) { 陳述句1; }
else if (條件2) { 陳述句2; }
...
else { 陳述句N; }
結果 = (條件) ? 真值 : 假值;
// 相當於
if (條件) 結果 = 真值; else 結果 = 假值;
enum Color { RED, GREEN, BLUE }; // 預設值 0, 1, 2
enum Color c = RED;
enum Status { ERR = -1, OK = 0, PENDING = 1 }; // 自訂值
int 常數別名,增強程式可讀性enum class 提供強型別枚舉switch (整數運算式) {
case 常數1: 陳述句1; break;
case 常數2: 陳述句2; break;
...
default: 陳述句N;
}
int、char、enum)case 標籤必須為編譯期常數default 為可選,處理所有 case 不符合的情況| 錯誤 | 正確 | 說明 |
|---|---|---|
| if (a = 5) | if (a == 5) | 指派 vs 比較 |
| if (0 < x < 10) | if (0 < x && x < 10) | C 不支援鏈式比較 |
| switch 無 break | 加 break 或註解 /* fallthrough */ | 避免非預期貫穿 |
| 邏輯運算子優先級混淆 | 善用括號明確分組 | > && > || |
掌握「布林邏輯、比較運算、短路求值、分支結構、枚舉語意、switch 跳轉表機制」,即可撰寫清晰、高效、可維護的 C 語言控制流程程式碼。