inline, restrict, _Bool, _Complex, _Imaginary),C11 再增 7 個,總計仍不足 50 個——語言核心極小,學習曲線平緩。<stdio.h>、<stdlib.h>、<string.h>、<math.h> 等提供統一介面,實作交給編譯器廠商最佳化。| 控制流 | 資料型別 | 儲存類別 | 其他 |
|---|---|---|---|
| if, else, switch, case, default | char, short, int, long, signed, unsigned | auto, register, static, extern | sizeof, typedef |
| for, while, do | float, double | const, volatile | |
| break, continue, goto | void | enum, union, struct | |
| return |
「C 語言的設計目標是讓程式碼行為可預測:每一行 C 碼大致對應固定數量的機器指令,無隱藏魔法。」—— Dennis Ritchie
#define/#include/#ifdef 純文字替換,不懂 C 語法,靈活但危險(宏副作用、名稱污染)。| 標準 | 年份 | 關鍵新特性 | 主流編譯器支援 |
|---|---|---|---|
| C89/C90 | 1989/1990 | ANSI/ISO 標準化、函數原型、void* | 全支援 |
| C99 | 1999 | // 註解、stdint.h、restrict、VLA、_Bool、複數、inline、指定初始化器 | GCC/Clang 全支援,MSVC 部分 |
| C11 | 2011 | _Generic、_Static_assert、_Alignas/_Alignof、原子操作 <stdatomic.h>、執行緒 <threads.h>、安全函數 Annex K | GCC/Clang 全支援,MSVC 部分 |
| C17/C18 | 2017/2018 | 修正缺陷,無新特性 | 全支援 |
| C23 | 2024 | nullptr、auto (推導)、constexpr、typeof、#embed、位精確整數、_BitInt、標準化 stdckdint.h 安全算術 | GCC 13+/Clang 16+ 實驗支援 |
✅ 事實:Rust 解決記憶體安全,但 C 擁有龐大既有代碼庫、成熟工具鏈、極簡 ABI、零執行期、硬體廠商首發 SDK 皆為 C。兩者將長期共存,C 正透過 MISRA C、CERT C、静態分析 (Coverity, Clang Static Analyzer)、動態檢測 (ASan, UBSan, MSan) 持續提升安全性。
gcc -Wall -Wextra -pedantic -std=c11 -fsanitize=address,undefined 開發流程。redis、sqlite3、lua、nginx 核心模組。C 語言以 32 個關鍵字起家,歷經四十餘年仍佔據 TIOBE 前三、GitHub 專案語言榜首。它不是「舊語言」,而是「基礎設施語言」——理解 C,即理解現代計算系統的骨架與血管。無論你寫 Python、Go、Rust、JavaScript,底層跑的都是 C 編譯出的機器碼。精通 C,是通往系統級工程師的必經之路。