C - 关键字
关键字是编译器中预定义的具有特殊含义的字,它们不能用于其他用途。根据 C99 标准,C 语言有 32 个关键字。关键字不能用作标识符。
下表列出了 C 语言中所有可用的关键字(保留字):
auto | double | int | struct |
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
continue | for | signed | void |
do | if | static | while |
default | goto | sizeof | volatile |
const | float | short | unsigned |
C 语言中的所有关键字都使用小写字母,但新添加的关键字则使用大写字母。C 语言区分大小写。因此,int 是关键字,但 INT 或 Int 不被识别为关键字。从 C99 开始引入的新关键字以下划线开头。编译器会检查源代码中所有关键字的语法正确性,然后将其转换为机器码。
C 语言关键字示例
在下面的程序中,我们将关键字用作标识符,即用户定义函数的名称,这将导致编译错误。
#include <stdio.h> void register(int, int); int main () { /* 变量定义: */ 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 | 指定无效返回类型 |
用户定义类型 C 关键字
C 语言允许您根据需要定义新的数据类型。用户定义类型包含一个或多个主要类型的元素。
用户定义数据类型提供以下关键字 -
struct | 声明一个结构体类型 |
typedef | 创建一个新的数据类型 |
union | 声明一个联合类型 |
enum | 声明一个枚举类型 |
C 语言存储类型关键字
以下一组关键字称为存储说明符。它们指示变量在内存中的存储位置。变量的默认存储类型为 auto,但您可以要求编译器生成具有特定存储属性的变量。
auto | 指定自动存储类 |
extern | 声明变量或函数 |
static | 指定静态存储类 |
register | 指定寄存器存储类 |
C 条件语句关键字
以下关键字可帮助您在程序中添加条件逻辑。用 if 和 else 关键字表达的条件逻辑为一个条件提供了两种可选操作。对于多路分支,使用switch case构造。在 C 语言中,汇编程序中的跳转操作由 goto 关键字 实现。
goto | 跳转到带标签的语句 |
if | 启动 if 语句 |
else | 当 if 条件为 false 时执行 |
case | 标记 switch 中的语句 |
switch | 启动 switch语句 |
default | 在 switch 语句中指定默认语句 |
循环和循环控制 C 关键字
重复或迭代是算法的一个重要方面。C 语言提供了不同的循环构建方法,以及用于控制循环行为的关键字。每个关键字都可以构建具有不同特征和用途的循环。
For | 启动一个 for 循环 |
do | 启动一个 do-while 循环 |
while | 启动一个 while 循环 |
continue | 跳过循环的一次迭代 |
break | 终止循环或 switch 语句 |
其他 C 关键字
以下其他关键字也非常重要:
const | 指定常量值 |
Sizeof | 确定数据类型的大小 |
Volatile | 编译器认为变量的值可能随时更改 |
在C99 版本中,新增了 5 个关键字 -
- _Bool
- _Complex
- _Imaginary
- inline
C11 中,新增了 7 个关键字 -
- _Alignas
- _Alignof
- _Atomic
- _Generic
- _Noreturn
- _Static_assert
C23 标准发布时,将引入 14 个关键字 -
- alignas
- alignof
- bool
- constexpr
- false
- nullptr
- static_assert
- thread_local
- true
- typeof
- typeof_unqual
- _Decimal128
大多数最近保留的字以下划线加大写字母开头,因为现有的程序源代码不应该使用这些标识符。
使用关键字时必须牢记以下几点:
- 关键字由编程语言保留,并具有预定义的含义。它们不能用作变量或函数的名称。
- 每个关键字必须按照其规定的语法使用。如果违反语法,编译器会报告编译错误。
- C 语言是最小的计算机语言之一,其 ANSI C 版本只有 32 个关键字,尽管后来又添加了一些关键字。