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 个关键字。这些关键字是程序逻辑的基本要素。这些关键字可大致分为以下类型 −

  1. Primary Data types

  2. User defined types

  3. Storage types

  4. Conditionals

  5. Loops and loop controls

  6. 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

continue

跳过循环一次迭代

break

终止循环或 switch 语句

Other C Keywords

下列其他关键字也极其重要:

const

Specifies a constant value

Sizeof

确定数据类型的长度

Volatile

编译器,变量的值随时可能改变

在 C99 版本中,增加了五个关键字 −

  1. _Bool

  2. _Complex

  3. _Imaginary

  4. inline

在 C11 中,增加了七个关键字

  1. _Alignas

  2. _Alignof

  3. _Atomic

  4. _Generic

  5. _Noreturn

  6. _Static_assert

当发布 C23 标准时,它将引入 14 个关键字 −

  1. alignas

  2. alignof

  3. bool

  4. constexpr

  5. false

  6. nullptr

  7. static_assert

  8. thread_local

  9. true

  10. typeof

  11. typeof_unqual

  12. _Decimal128

最近保留的大多数单词以下划线开头,后跟大写字母,因为现有的程序源代码不应使用这些标识符。

使用关键字时必须记住以下几点:

  1. 关键词是由编程语言保留的,具有预定义的含义。它们不能用作变量或函数的名称。

  2. 每个关键字都必须按规定用于其用途的语法。如果违反语法,编译器将报告编译错误。

  3. C 是最小的计算机语言之一,其 ANSI C 版本中只有 32 个关键字,尽管之后已经添加了一些关键词。