❮ 上一节
下一节 ❯
C - 关键字
更新于 2025/6/7 12:37:17
关键字是编译器中预定义的具有特殊含义的字,它们不能用于其他用途。根据 C99 标准,C 语言有 32 个关键字。关键字不能用作标识符。
下表列出了 C 语言中所有可用的关键字(保留字):
autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunioncontinueforsignedvoiddoifstaticwhiledefaultgotosizeofvolatileconstfloatshortunsigned
C 语言中的所有关键字都使用小写字母,但新添加的关键字则使用大写字母。C 语言区分大小写。因此,int 是关键字,但 INT 或 Int 不被识别为关键字。从 C99 开始引入的新关键字以下划线开头。编译器会检查源代码中所有关键字的语法正确性,然后将其转换为机器码。
C 语言关键字示例
在下面的程序中,我们将关键字用作标识符,即用户定义函数的名称,这将导致编译错误。
#include
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 个关键字,尽管后来又添加了一些关键字。
❮ 上一节
下一节 ❯