外观
Token(令牌)
在 C 语言中,令牌(Token)是程序的基本组成单位,编译器通过对源代码进行词法分析,将代码分解成一个个的令牌。
C 语言的令牌主要包括以下几种类型:
- 标识符(Identifiers)
- 常量(Constants)
- 字符串字面量(String Literals)
- 运算符(Operators)
- 分隔符(Separators)
- 关键字(Keywords)
标识符
用于命名变量、函数、结构体等。标识符必须以字母或下划线开头,后面可以跟字母、数字或下划线。
C 标识符内不允许出现标点字符,比如 @、$ 和 %。
C 是区分大小写的编程语言。
常量
是固定值,在程序执行期间不会改变。包括整型常量、浮点型常量、字符常量、枚举常量等。
c
const int MAX = 100; // 整型常量
const float PI = 3.14; // 浮点型常量
const char NEWLINE = '\n'; // 字符常量
1
2
3
2
3
字符串字面量
由双引号括起来的字符序列。字符串末尾会自动添加一个空字符 '\0' 作为结束标志。
c
char greeting[] = "Hello, World!";
1
运算符
C 语言中的运算符种类繁多,常见的包括:
- 算术运算符:+, -, *, /, %
- 关系运算符:==, !=, >, <, >=, <=
- 逻辑运算符:&&, ||, !
- 位运算符:&, |, ^, ~, <<, >>
- 赋值运算符:=, +=, -=, *=, /=, %=
- 其它运算符:sizeof, ?:, &, *, ->, .
c
int a = 5, b = 10; // 使用赋值运算符 =
int sum = a + b; // 使用算术运算符 +
int isEqual = (a == b); // 使用关系运算符 ==
1
2
3
2
3
分隔符
分隔符用于分隔不同的代码元素,如逗号、分号、花括号等。
在 C 程序中,分号 ; 是语句结束符,也就是说,每个语句必须以分号结束,它表明一个逻辑实体的结束。
c
// 单独的分号也可以作为一个空语句,表示什么都不做
;
1
2
2
关键字
关键字是C语言保留给自己用的保留字。不能作为常量名、变量名或其他标识符名称。
基础关键字
- auto 声明自动变量
- break 跳出当前循环
- case 开关语句分支
- char 声明字符型变量或函数返回值类型
- const 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变
- continue 结束当前循环,开始下一轮循环
- default 开关语句中的"其它"分支
- do 循环语句的循环体
- double 声明双精度浮点型变量或函数返回值类型
- else 条件语句否定分支(与 if 连用)
- enum 声明枚举类型
- extern 声明变量或函数是在其它文件或本文件的其他位置定义
- float 声明浮点型变量或函数返回值类型
- for 一种循环语句
- goto 无条件跳转语句
- if 条件语句
- int 声明整型变量或函数
- long 声明长整型变量或函数返回值类型
- register 声明寄存器变量
- return 子程序返回语句(可以带参数,也可不带参数)
- short 声明短整型变量或函数
- signed 声明有符号类型变量或函数
- sizeof 计算数据类型或变量长度(即所占字节数)
- static 声明静态变量
- struct 声明结构体类型
- switch 用于开关语句
- typedef 用以给数据类型取别名
- unsigned 声明无符号类型变量或函数
- union 声明共用体类型
- void 声明函数无返回值或无参数,声明无类型指针
- volatile 说明变量在程序执行中可被隐含地改变
- while 循环语句的循环条件
C99 新增关键字
- _Bool
- _Complex
- _Imaginary
- inline
- restrict
C11 新增关键字
- _Alignas
- _Alignof
- _Atomic
- _Generic
- _Noreturn
- _Static_assert
- _Thread_local