C语言的关键字可以分为以下几类:

(图片来源网络,侵删)
数据类型关键字 (12个)
这些关键字用于声明变量或函数的返回值类型。
char: 字符类型short: 短整型int: 整型long: 长整型float: 单精度浮点型double: 双精度浮点型signed: 有符号类型(修饰int,char等)unsigned: 无符号类型(修饰int,char等)void: 空类型,无值类型_Bool: 布尔类型 (C99新增)_Complex: 复数类型 (C99新增)_Imaginary: 虚数类型 (C99新增)
存储类型关键字 (5个)
这些关键字用于定义变量或函数的存储期限和作用域。
auto: 自动变量,通常在函数内部定义的局部变量默认为此类型static: 静态变量,其值在程序整个运行期间都存在register: 寄存器变量,建议编译器将变量存储在寄存器中以提高访问速度extern: 声明一个变量或函数是在其他文件中定义的typedef: 为数据类型创建一个新的名字(别名)
流程控制关键字 (12个)
这些关键字用于控制程序的执行流程。
if: 条件判断else: 条件分支的否定部分switch: 多路选择开关case:switch语句中的分支标签default:switch语句中未匹配case时的默认分支while: 当型循环do: do-while 循环的起始关键字for: for 循环goto: 无条件跳转continue: 跳过本次循环的剩余语句,进入下一次循环break: 跳出当前循环或switch语句return: 从函数返回一个值并结束函数的执行
结构体、联合体、枚举关键字 (5个)
这些关键字用于创建自定义的复合数据类型。

(图片来源网络,侵删)
struct: 结构体,将不同类型的数据组合在一起union: 联合体,多个成员共享同一段内存空间enum: 枚举,定义一组命名的整型常量const: 常量限定符,修饰的变量值不能被修改volatile: 易变限定符,告诉编译器该变量的值可能被未知的方式改变(如硬件),禁止编译器过度优化
其他关键字 (3个)
sizeof: 一个运算符,返回一个变量或类型所占的字节数inline: 内联函数建议,建议编译器将函数调用展开为函数体,以减少函数调用的开销_Alignof: 查询类型的对齐要求 (C11新增)
总结表格
| 类别 | 关键字 |
|---|---|
| 数据类型 | char, short, int, long, float, double, signed, unsigned, void, _Bool, _Complex, _Imaginary |
| 存储类型 | auto, static, register, extern, typedef |
| 流程控制 | if, else, switch, case, default, while, do, for, goto, continue, break, return |
| 复合类型 | struct, union, enum, const, volatile |
| 其他 | sizeof, inline, _Alignof |
重要说明
- 标准差异:上面的列表包含了 C99 和 C11 标准引入的关键字(如
_Bool,_Complex,_Imaginary,_Alignof),在较老的 C89/C90 标准中,这些关键字是不存在的。 - 编译器扩展:不同的编译器(如 GCC, MSVC)可能会支持自己的扩展关键字,
__attribute__(GCC) 或__declspec(MSVC),这些不属于标准C语言关键字。 - 不能用作标识符:所有这些关键字都不能用作变量名、函数名、宏名或其他自定义的标识符。
int if = 10;是一个语法错误。
回答“C语言提供的合法的关键字是( )”这个问题时,最准确的答案是列出上述所有标准C语言关键字。
