| 類別 | 定義與規則 | 合法示例 | 非法示例 |
|---|---|---|---|
| 標識符 | 字母/數字/下劃線組成,**首字符必須為字母或下劃線**;大小寫敏感;標準 C 不限長度 (編譯器實現有限制,如早期前 8 位有效) | a, x, _3x, BOOK_1, sum5 | 3s (數字開頭), s*T (非法字符*), -3x (符號開頭), bowy-1 (減號非法) |
| 關鍵字 | 語言保留字,具特定語義,不可作標識符。三大類: 1. 類型說明符 ( int, double...)2. 語句定義符 ( if, else, for, while...)3. 預處理命令字 ( #include, #define...) | int, if, for, while, return, struct, const, static | 不可自定義同名標識符 |
| 運算符 | 1個或多字符組成,與運算元構成表達式。含算術/關系/邏輯/位/賦值/條件/逗號/尺寸/成員/下標/調用等豐富集合 | +, -, *, /, %, ++, --, ==, !=, &&, ||, !, &, |, ^, ~, <<, >>, =, +=, ?:, sizeof, ., ->, [], () | — |
| 分隔符 | 逗號 , (參數/聲明分隔)、空格 (詞法分隔)。**關鍵字/標識符間必須至少一空格**,否則語法錯誤 (如 inta 被識別為單一標識符) | int a, b; if (x > 0) | inta; // 錯誤 |
| 常量 | 數字常量、字符常量 'a'、字符串常量 "hello"、符號常量 #define MAX 100、轉義字符 \n, \t, \\, \', \"。詳見後續章節 | 123, 3.14, 'A', "C", MAX, '\n' | — |
| 註釋符 | /* ... */ (C89 標準),// ... (C99+)。**不可嵌套**。可出現任意位置。調試時可暫時註釋代碼塊 | /* 註釋 */ // 單行註釋 | /* /* 內層 */ 外層 */ // 錯誤:嵌套 |
{ 與所屬語句首字母對齊,} 獨佔行對齊 {。if (cond) { ❌if (cond){ ✅a-z (26)、A-Z (26)0-9 (10)\t、換行符 \n、回車 \r、換頁 \f、垂直製表 \v。**除字符/字符串常量外,編譯器忽略空白符**,僅作分隔。~ ! @ # $ % ^ & * ( ) - _ + = { } [ ] | \ : ; " ' < > , . ? / 等。user_count 而非 uc。__xxx、下劃線+大寫開頭 _Xxx 為編譯器/標準庫保留。i, j, k 可接受;全局/類成員必須語義完整。#include 等) 通常置於文件最前。} 後**不加**分號。這份筆記覆蓋了 C 語言詞法六大類核心規則、編程風格三大鐵律、字符集構成、標識符命名法則、源程序結構特點。扎實掌握詞法層面規則是閱讀、編寫、調試 C 代碼的語法基石。建議配合《C Primer Plus》或 K&R 系統學習,並在每日編碼中強化風格規範,將規範內化為肌肉記憶。