以下是C语言中所有合法关键字的完整列表,并附有简要说明。
C语言关键字列表 (共37个)
数据类型关键字
这些关键字用于声明变量或函数的返回值类型。
| 关键字 | 描述 |
|---|---|
char |
声明字符型变量或函数 |
double |
声明双精度浮点型变量或函数 |
enum |
声明枚举类型 |
float |
声明单精度浮点型变量或函数 |
int |
声明整型变量或函数 |
long |
声声明长整型变量或函数 |
short |
声明短整型变量或函数 |
signed |
声明有符号类型数据 |
struct |
声明结构体类型 |
union |
声明共用体(联合)类型 |
unsigned |
声明无符号类型数据 |
void |
声明函数无返回值或无参数,声明无类型指针 |
存储类型关键字
这些关键字定义变量的存储方式和生命周期。
| 关键字 | 描述 |
|---|---|
auto |
声明自动变量,默认的存储类型,通常省略 |
extern |
声明变量是在其他文件中定义的全局变量 |
register |
声明寄存器变量,建议编译器将变量存储在寄存器中 |
static |
声明静态变量,作用域限定在文件或函数内部,生命周期贯穿整个程序 |
流程控制关键字
这些关键字用于控制程序的执行流程。
| 关键字 | 描述 |
|---|---|
break |
跳出当前循环或switch语句 |
case |
switch语句中的分支标记 |
continue |
结束本次循环,进入下一次循环 |
default |
switch语句中的默认分支 |
do |
do-while循环的起始关键字 |
else |
if语句的否定分支 |
for |
for循环的关键字 |
goto |
无条件跳转到程序中的指定标签 |
if |
条件判断语句 |
return |
从函数中返回,并可以带回一个返回值 |
switch |
多分支选择语句 |
while |
while循环或do-while循环的结束关键字 |
运算符相关关键字
这些关键字本身也是运算符,用于执行特定的操作。
| 关键字 | 描述 |
|---|---|
sizeof |
计算数据类型或变量所占的内存空间(以字节为单位) |
typedef |
为数据类型定义一个新的名字(别名) |
其他关键字
这些关键字具有特殊用途。
| 关键字 | 描述 |
|---|---|
const |
声明常量,变量的值在程序运行过程中不能被修改 |
volatile |
提示编译器该变量的值可能被外部因素(如硬件)改变,防止编译器过度优化 |
_Bool |
C99引入,布尔类型,值为true或false |
_Complex |
C99引入,复数类型关键字 |
_Imaginary |
C99引入,虚数类型关键字 |
重要说明
-
大小写敏感:C语言的关键字都是小写的。
Int、IF、WHILE不是关键字,而是合法的标识符(虽然强烈不建议这样做,因为它会造成混淆)。 -
标准差异:
- C89/ANSI C:标准关键字有 32 个,缺少了C99新增的
_Bool,_Complex,_Imaginary。 - C99:在C89的基础上增加了
_Bool,_Complex,_Imaginary三个关键字,总数变为 35 个。 - C11:在C99的基础上增加了
_Alignas,_Alignof,_Atomic,_Generic,_Noreturn,_Static_assert,_Thread_local这7个关键字,总数变为 42 个,但其中很多是以下划线开头,用于支持更高级的特性(如泛型选择、线程局部存储等)。 - 嵌入式/特定编译器:像Keil C51这样的嵌入式C编译器,可能会扩展自己的关键字(如
data,xdata,code,sfr,sbit等),这些是编译器特定的,不属于标准C语言。
- C89/ANSI C:标准关键字有 32 个,缺少了C99新增的
-
const和sizeof的特殊性:const虽然常被称为“限定符”,但在语法上它的作用和关键字完全一样,用于修饰变量,使其成为只读常量。sizeof是一个运算符,但它看起来像一个函数调用,并且它的操作数在编译时大部分情况下就能确定,因此它也总是被列为关键字。
对于大多数现代C语言编程(遵循C99或C11标准),你需要记住上面列出的 37个核心关键字,了解并正确使用这些关键字是编写有效、无错误的C代码的基础。
