C - 關鍵字



關鍵字是在編譯器中具有特殊含義的預定義詞,它們不能用於任何其他目的。根據 C99 標準,C 語言有 32 個關鍵字。關鍵字不能用作識別符號

下表列出了 C 語言中所有可用關鍵字(保留字)

autodoubleintstruct
breakelselongswitch
caseenumregistertypedef
charexternreturnunion
continueforsignedvoid
doifstaticwhile
defaultgotosizeofvolatile
constfloatshortunsigned

所有 C 語言中的關鍵字都使用小寫字母,儘管在 C 語言中新新增的關鍵字在其中包含大寫字母。C 語言是區分大小寫的語言。因此,int 是一個關鍵字,但 INT 或 Int 未被識別為關鍵字。從 C99 開始引入的新關鍵字以下劃線字元開頭。編譯器檢查原始碼中所有關鍵字的語法正確性,然後將其轉換為機器程式碼。

C 關鍵字示例

在以下程式中,我們使用關鍵字作為識別符號,即作為使用者定義函式的名稱,這將導致編譯錯誤。

#include <stdio.h>

void register(int, int);
int main () {

   /* variable definition: */
   int a=5, b=7;
   register(a,b);
 
   return 0;
}
void register(int a, int b)
{
   printf("%d", a+b);
}

錯誤

main.c:3:15: error: expected identifier or '(' before 'int'
    3 | void register(int, int);
      |               ^~~
main.c: In function 'main':
main.c:8:14: error: expected ')' before ',' token
    8 |    register(a,b);
      |              ^
      |              )
main.c: At top level:
main.c:12:15: error: expected identifier or '(' before 'int'
   12 | void register(int a, int b)
      |               ^

錯誤的原因是我們使用關鍵字 register 作為使用者定義函式的名稱,這是不允許的。

ANSI C 版本有 32 個關鍵字。這些關鍵字是程式邏輯的基本元素。這些關鍵字可以大致分為以下型別:

  • 基本資料型別
  • 使用者定義型別
  • 儲存型別
  • 條件語句
  • 迴圈和迴圈控制
  • 其他

讓我們討論每類關鍵字。

基本型別 C 關鍵字

這些關鍵字用於變數宣告。C 語言是一種靜態型別語言,必須宣告要使用的變數。C 語言中的變數使用以下關鍵字宣告

int 宣告一個整型變數
long 宣告一個長整型變數
short 宣告一個短整型變數
signed 宣告一個有符號變數
double 宣告一個雙精度變數
char 宣告一個字元型變數
float 宣告一個浮點型變數
unsigned 宣告一個無符號變數
void 指定 void 返回型別

使用者定義型別 C 關鍵字

C 語言允許您根據需要定義新的資料型別。使用者定義型別具有一個或多個基本型別元素。

以下關鍵字用於使用者定義的資料型別:

struct 宣告一個結構體型別
typedef 建立一個新的資料型別
union 宣告一個聯合體型別
enum 宣告一個列舉型別

儲存型別 C 關鍵字

以下關鍵字集稱為儲存說明符。它們指示變數儲存在記憶體中的位置。變數的預設儲存型別是 auto,儘管您可以要求編譯器以特定的儲存屬性形成變數。

auto 指定自動儲存類別
extern 宣告變數或函式
static 指定靜態儲存類別
register 指定暫存器儲存類別

條件語句 C 關鍵字

以下關鍵字集可幫助您在程式中設定條件邏輯。用 if 和 else 關鍵字表示的條件邏輯為條件提供兩種替代操作。對於多分支,請使用switch – case結構。在 C 語言中,彙編程式中的跳轉操作由goto 關鍵字實現。

goto 跳轉到帶標籤的語句
if 開始一個 if 語句
else 在 if 條件為假時執行
case 標記 switch 語句中的語句
switch 開始一個 switch 語句
default 指定 switch 語句中的預設語句

迴圈和迴圈控制 C 關鍵字

重複或迭代是演算法的一個重要方面。C 語言提供了形成迴圈的不同替代方案,以及控制迴圈行為的關鍵字。每個關鍵字都允許您形成具有不同特性和用途的迴圈。

For 開始一個for 迴圈
do 開始一個do-while 迴圈
while 開始一個while 迴圈
continue 跳過迴圈的一次迭代
break 終止迴圈或 switch 語句

其他 C 關鍵字

以下其他關鍵字也極其重要

const 指定一個常數值
Sizeof 確定資料型別的尺寸
Volatile 編譯器變數的值可能隨時更改

在 C99 版本中,增加了五個關鍵字:

  • _Bool
  • _Complex
  • _Imaginary
  • inline

在 C11 中,增加了七個關鍵字

  • _Alignas
  • _Alignof
  • _Atomic
  • _Generic
  • _Noreturn
  • _Static_assert

當 C23 標準釋出時,它將引入 14 個新關鍵字:

  • alignas
  • alignof

  • 布林型
  • 編譯時常量
  • 空指標
  • 靜態斷言
  • 執行緒區域性
  • typeof
  • typeof_unqual
  • _Decimal128

大多數最近保留的關鍵字以一個下劃線後跟一個大寫字母開頭,因為現有的程式原始碼不應該使用這些識別符號。

使用關鍵字時必須牢記以下幾點

  • 關鍵字由程式語言保留,並具有預定義的含義。它們不能用作變數或函式的名稱。
  • 每個關鍵字都必須根據其使用規定的語法使用。如果違反語法,編譯器將報告編譯錯誤。
  • C 是一種最小的計算機語言之一,其 ANSI C 版本只有 32 個關鍵字,儘管之後添加了一些關鍵字。
廣告