首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 標準語言核心筆記:標識符、關鍵字、運算符、常量、變量與註釋規範

     編輯:關於C語言

1. C 標準演進

  • K&R C:1978 年《The C Programming Language》定義的事實標準。
  • C89 / C90 (ANSI/ISO C):首個國際標準,現代編譯器基線。
  • C99:// 註釋、stdint.h、inline、restrict、VLA、_Bool、long long、指定初始化器。
  • C11:_Generic、_Atomic、_Thread_local、alignas/alignof、多執行緒、邊界檢查介面。
  • C17/C18:C11 勘誤版,無新特性。
  • C23:typeof、nullptr、[[attributes]]、constexpr、#embed 等現代化特性。

建議:專案鎖定 -std=c11 或 -std=c17,避免 GNU 擴展污染可移植性。

2. 標識符命名規範

規則說明
字符集字母、數字、底線;首字符不能是數字
大小寫敏感BOOK ≠ book
長度限制標準無限制,編譯器通常前 31/63 字符有效
保留字不可作標識符(見下表)
命名風格變數/函數 snake_case、常量 UPPER_SNAKE、類型 PascalCase

3. 關鍵字完整表(C11 共 44 個)

auto     break    case     char     const    continue default  do
double   else     enum     extern   float    for      goto     if
inline   int      long     register restrict return   short    signed
sizeof   static   struct   switch   typedef  union    unsigned void
volatile while    _Alignas _Alignof _Atomic  _Bool    _Complex _Generic
_Imaginary _Noreturn _Static_assert _Thread_local

分類:

  • 型別說明:int、double、struct...
  • 控制流:if、for、switch...
  • 儲存類別:static、extern、register...
  • 其他:sizeof、typedef、const...

4. 運算符優先序與結合性(高→低)

() [] -> .          // 後綴/成員存取,左結合
++ -- + - ! ~ * & (type) sizeof  // 一元,右結合
* / %               // 乘除模,左結合
+ -                 // 加減,左結合
<< >>               // 移位,左結合
< <= > >=           // 關係,左結合
== !=               // 相等,左結合
&                   // 位元 AND,左結合
^                   // 位元 XOR,左結合
|                   // 位元 OR,左結合
&&                  // 邏輯 AND,左結合
||                  // 邏輯 OR,左結合
?:                  // 三元,右結合
= += -= *= /= %= &= ^= |= <<= >>=  // 賦值,右結合
,                   // 逗號,左結合

口訣:單目>算術>移位>關係>相等>位元>邏輯>三元>賦值>逗號。

5. 分隔符與編碼細節

  • 逗號:函數參數列表、變數宣告列表、for 多初始化/增量。
  • 空白:關鍵字/標識符間必須至少一空白(int a ≠ inta)。
  • 分號:語句結束符;{} 區塊結尾不加分號。

6. 常量分類與字面值

7. 變量宣告、定義與初始化

extern int a;        // 宣告(不分配記憶體)
int a;               // 定義(分配記憶體,未初始化 → 不定值)
int a = 0;           // 定義並初始化
static int a = 1;    // 靜態儲存期,零初始化
const int MAX = 100; // 唯讀,編譯期常量替換

規則:定義即宣告,宣告不一定定義。跨檔案共享變數:一處定義,他處 extern 宣告。

8. 註釋規範

  • /* ... */:C89 標準,支援多行,**不可巢狀**。
  • // ...:C99 標準,單行,現代編譯器通用,**可巢狀**。
  • 文檔註釋:/** ... */ (Doxygen/Javadoc 風格),生成 API 文檔。

9. 實戰建議清單

  1. 編譯旗標:-Wall -Wextra -Werror -std=c11 -pedantic
  2. 靜態分析:cppcheck、clang-tidy、Coverity
  3. 編碼風格:統一縮進(4 空格)、大括號風格(K&R/Allman)、命名規範。
  4. 避免未定義行為(UB):有號溢位、空指標解引用、移位超寬度、未初始化讀取。

總結

C 語言看似簡單,實則細節決定成敗。精通標準演進、標識符規範、關鍵字語義、運算符優先序、常量/變量儲存模型、註釋工程化,是寫出可移植、可維護、無 UB 代碼的基石。建議隨時備查 C11 標準草案 (N1570) 以釐清邊界行為。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類別範例說明
整數常量123, 0173 (八進位), 0x7B (十六進位), 123L (long), 123ULL (unsigned long long)後綴指定型別
浮點常量3.14, 1e-5, 3.14f (float), 3.14L (long double)預設 double
字符常量'a', '\n', '\x41', L'中' (寬字符)單引號,整數型別
字串常量"hello", L"世界" (寬字串)雙引號,以 \0 結尾,唯讀記憶體
符號常量#define PI 3.14159, enum {RED, GREEN}預處理/編譯期常量