04-c语言关键字
根据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:跳出循环/switchcontinue:跳过本次循环剩余部分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 | 特殊用途的关键字 |
四、关键特性
- 大小写敏感:所有关键字均为小写字母
- 不可重命名:不能用作变量名、函数名等标识符
- 预定义保留字:由C语言标准明确规定
- 功能明确:每个关键字对应特定的语法规则
提示:C17标准(2018年)是C11的修正版,未新增关键字,截至C17标准C语言共有44个关键字。在实际编程中,C99及之后标准的新增关键字在现代C语言开发中越来越常用,特别是
_Bool、_Alignas、_Generic等。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

