Cprogramming 简明教程
C - Keywords
关键字是那些在编译器中具有特殊含义的预定义单词,它们不可用于任何其他目的。根据 C99 标准,C 语言有 32 个关键字。关键字不能用作 identifiers 。
下表列出了 C 语言中所有可用关键字(保留字):
C 语言中的所有关键字均为小写字母,但 C 语言中新添加的关键字包含大写字母。C 是一种区分大小写的语言。因此,int 是关键字,但 INT 或 Int 不被识别为关键字。C99 及更高版本引入的新关键字以下划线字符开头。编译器检查源代码中所有关键字的语法是否正确,然后将其转换为机器代码。
Example of C Keywords
在以下程序中,我们将关键字用作标识符,即用作用户定义函数的名称,这将导致编译错误。
#include <stdio.h>
void register(int, int);
int main () {
/* variable definition: */
int a=5, b=7;
register(a,b);
return 0;
}
void register(int a, int b)
{
printf("%d", a+b);
}
Errors
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 个关键字。这些关键字是程序逻辑的基本要素。这些关键字可大致分为以下类型 −
-
Primary Data types
-
User defined types
-
Storage types
-
Conditionals
-
Loops and loop controls
-
Others
我们来看一下每一类中的关键字。
Primary Types C Keywords
这些关键字用于 variable 声明。C 是一种静态类型语言,要使用的变量必须声明。C 中的变量使用以下关键字声明:
int |
Declares an integer variable |
long |
声明一个长整数变量 |
short |
声明一个短整数变量 |
signed |
Declares a signed variable |
double |
Declares a double-precision variable |
char |
Declares a character variable |
float |
Declares a floating-point variable |
unsigned |
Declares an unsigned variable |
void |
指定一个 void 返回类型 |
User-defined Types C Keywords
C 语言允许您根据需要定义新的 data types 。用户定义类型包含一个或多个基本类型元素。
针对用户定义数据类型提供了以下关键字 −
struct |
Declares a structure type |
typedef |
创建新数据类型 |
union |
Declares a union type |
enum |
Declares an enumeration type |
Storage Types C Keywords
下列关键字称为 storage specifiers 。它们指示变量在内存中的存储位置。变量的默认存储类型是自动的,尽管您可以要求编译器使用特定的存储属性来形成变量。
auto |
Specifies automatic storage class |
extern |
声明变量或函数 |
static |
Specifies static storage class |
register |
Specifies register storage class |
Conditionals C Keywords
下列关键字可帮助您在程序中放入条件逻辑。由 if 和 else 关键字表示的条件逻辑为一个条件提供了两个替换操作。对于多路分支,请使用 switch – case 构造。在 C 中,汇编器中的跳转操作由 goto keyword 实现。
goto |
跳转到标记语句 |
if |
Starts an if statement |
else |
在 if 条件不满足时执行 |
case |
对 switch 中的语句进行标记 |
switch |
Starts a switch statement |
default |
指定 switch 中的默认语句 |
Loops and Loop Control C Keywords
重复或迭代是算法的一个基本方面。C 为形成循环提供了不同的选择,以及用于控制循环行为的关键字。每个关键字都允许您形成不同特征和用法循环。
For |
Starts a for-loop |
do |
Starts a do-while loop |
while |
starts a while loop |
跳过循环一次迭代 |
|
终止循环或 switch 语句 |
Other C Keywords
下列其他关键字也极其重要:
const |
Specifies a constant value |
Sizeof |
确定数据类型的长度 |
Volatile |
编译器,变量的值随时可能改变 |
在 C99 版本中,增加了五个关键字 −
-
_Bool
-
_Complex
-
_Imaginary
-
inline
在 C11 中,增加了七个关键字
-
_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 个关键字,尽管之后已经添加了一些关键词。