根据C语言标准(C89/C99/C11/C17),C语言共有44个关键字。

一、C语言标准演进

  • C89标准(1989年):32个关键字
  • C99标准(1999年):新增5个关键字,共37个
  • C11标准(2011年):新增7个关键字,共44个
  • C17标准(2018年):修正C11缺陷,未新增关键字

二、C语言关键字完整列表

1. C89标准关键字(32个)

数据类型关键字(12个):

  • char:字符类型(1字节)
  • int:整型(通常4字节)
  • float:单精度浮点型(4字节)
  • double:双精度浮点型(8字节)
  • short:短整型(2字节)
  • long:长整型(4/8字节)
  • signed:有符号类型
  • unsigned:无符号类型
  • void:无类型(用于函数返回值或指针)
  • struct:结构体类型
  • union:联合体(共用体)类型
  • enum:枚举类型

存储类关键字(5个):

  • auto:自动变量(默认存储类别)
  • register:寄存器变量
  • static:静态变量
  • extern:外部变量/函数声明
  • const:只读变量

控制语句关键字(9个):

  • if:条件判断
  • else:条件分支
  • switch:多分支选择
  • case:switch分支标签
  • default:switch默认分支
  • for:循环语句
  • while:循环语句
  • do:循环语句(先执行后判断)
  • goto:无条件跳转

其他关键字(6个):

  • break:跳出循环/switch
  • continue:跳过本次循环剩余部分
  • return:函数返回
  • sizeof:计算数据类型或变量大小
  • typedef:类型重命名
  • volatile:易变变量(防止编译器优化)

2. C99标准新增关键字(5个)

  • inline:内联函数(减少函数调用开销)
  • restrict:指针限制(唯一访问该内存)
  • _Bool:布尔类型(true/false)
  • _Complex:复数基本类型
  • _Imaginary:虚数类型(没有实部的纯虚数)

3. C11标准新增关键字(7个)

  • _Alignas:内存对齐指定
  • _Alignof:获取类型对齐值
  • _Atomic:原子操作类型
  • _Static_assert:编译期断言
  • _Noreturn:声明函数无返回(如exit)
  • _Thread_local:线程局部存储
  • _Generic:提供重载的接口入口

三、关键字功能分类

类别关键字说明
基本数据类型char, int, float, double, void定义变量的基本数据类型
类型修饰short, long, signed, unsigned修饰基本数据类型,改变其大小或符号
复合数据类型struct, union, enum定义自定义数据类型
类型别名typedef为现有类型定义别名
类型限定const, volatile, restrict限制变量的行为或优化提示
存储类别auto, register, static, extern控制变量的存储周期和作用域
流程控制if, else, switch, case, default, for, while, do, goto, break, continue控制程序执行流程
函数相关return, inline函数定义和调用相关
其他sizeof, _Alignas, _Alignof, _Atomic, _Static_assert, _Noreturn, _Thread_local, _Generic特殊用途的关键字

四、关键特性

  1. 大小写敏感:所有关键字均为小写字母
  2. 不可重命名:不能用作变量名、函数名等标识符
  3. 预定义保留字:由C语言标准明确规定
  4. 功能明确:每个关键字对应特定的语法规则

提示:C17标准(2018年)是C11的修正版,未新增关键字,截至C17标准C语言共有44个关键字。在实际编程中,C99及之后标准的新增关键字在现代C语言开发中越来越常用,特别是_Bool_Alignas_Generic等。