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

C語言關鍵字完整分類解析:C89/C99/C11 標準全覆蓋

     編輯:關於C語言

C語言關鍵字完整分類解析:C89/C99/C11 標準全覆蓋

關鍵字是編譯器保留、具有特殊語義的標識符,不可作變數/函數名。本文按語義分類梳理 C89(32個)、C99(+5個)、C11(+7個)標準關鍵字,附帶中文說明與典型用法,方便速查與教學。

一、資料類型關鍵字(12 + 3)

關鍵字標準說明範例
voidC89無類型/無返回值/無參數void foo(void); void* p;
charC89字元型(1 byte)char c = 'a';
shortC89短整型(≥16位)short s = 32767;
intC89整型(≥16位,通常32位)int i = 42;
longC89長整型(≥32位)long l = 1L;
floatC89單精度浮點(≥6有效位)float f = 3.14f;
doubleC89雙精度浮點(≥10有效位)double d = 3.14;
signedC89有符號修飾(預設)signed char sc;
unsignedC89無符號修飾unsigned int ui = 42u;
_BoolC99布林型(0/1)_Bool flag = 1;
_ComplexC99複數型_Complex double z = 1.0+2.0*I;
_ImaginaryC99虛數型_Imaginary float y = 1.0*I;
_Decimal32/64/128C11十進制浮點(選擇性支援)_Decimal64 price = 19.99dd;

二、類型構造關鍵字(4)

關鍵字說明範例
struct結構體,聚合異構資料struct Pt {int x,y;};
union共用體,同一記憶體多解釋union U {int i; float f;};
enum枚舉,命名整數常量集enum Color {RED, GREEN};
typedef類型別名,非新類型typedef int Int32;

三、儲存類別與鏈接屬性(5)

關鍵字說明備註
auto自動儲存期(區域變數預設),極少顯式用C89
register建議存入寄存器,不可取址C89,現代編譯器自動優化
static靜態儲存期/內部鏈接/類內共享C89,多義詞,語境決定義
extern外部鏈接聲明,跨檔案共享C89
_Thread_local執行緒區域儲存期C11

四、類型限定詞(4 + 1)

關鍵字說明標準
const唯讀,編譯期常量傳播優化C89
volatile易變,禁止優化,硬體暫存器/訊號處理必備C89
restrict指針無別名,允許積極優化(C99 針對指針)C99
_Atomic原子型別限定詞(C11 原子操作基礎)C11
inline建議內聯展開(函數限定詞)C99

五、控制流關鍵字(12)

分類關鍵字說明
選擇if / else條件分支
switch / case / default多路分支,default 為兜底
迴圈for / while / do三種迴圈形式
break跳出最內層迴圈/switch
continue結束本輪迴圈,進入下一輪
goto無條件跳轉(慎用)
跳轉/返回return函數返回,可帶運算式
_Noreturn函數不返回(abort/exit/長跳轉)

六、其他特殊關鍵字(3 + 2)

關鍵字標準說明
sizeofC89編譯期/執行期求類型/運算式大小(位元組)
_AlignasC11指定對齊需求(位元組)
_AlignofC11查詢類型/運算式對齊要求
_GenericC11編譯期類型泛型選擇,模擬重載
_Static_assertC11編譯期斷言,失敗報錯

版本演進速查表

標準新增關鍵字總數
C89/C90auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while32
C99_Bool _Complex _Imaginary inline restrict37
C11_Alignas _Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local44

常見誤區澄清

  • sizeof 是運算子而非函數,引數為類型時需括號:sizeof(int);為運算式時可省略:sizeof x
  • const int* p 指向常量整數的指針(不可經 p 修改),int* const p 是常量指針(p 自身不可修改)
  • volatile 不等同於執行緒安全,多執行緒同步需用 _Atomic 或鎖
  • restrict 僅對指針有效,違反承諾導致未定義行為

熟記關鍵字分類與語義,能助你閱讀標準文檔、編寫符合規範的代碼、避開命名衝突陷阱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved