基本概念
环境
ANSI C 的任何一个实现,都存在两种环境:
编译环境,源代码被转换为可执行的机器指令。
执行环境,实际代码执行的环境。
这两种环境不必位于同一台机器上。
编译
编译将组成一个程序的每个源文件转换成目标代码,然后各个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序。
编译分为几个阶段:
预处理阶段,执行宏展开,头文件包含等操作。
词法解析。
词法规则
转义序列
转义序列 | 表示 |
---|---|
\a | 提醒/(警报) |
\b | Backspace |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
\? | 文本问号 |
\ooo | 八进制表示法的 ASCII 字符 |
\xhh | 十六进制表示法的 ASCII 字符 |
\xhhhh | 以十六进制表示法,则此转义序列用于常量宽字符或 Unicode 字符串的 Unicode 字符。例如,WCHAR f = L'\x4e00' 或 WCHAR b[] = L"The Chinese character for one is \x4e00"。 |
自有形式的源代码
词法中不规定什么地方可以书写语句。
词法中不规定一行写多少条语句。
词法中不规定什么地方可以出现空格。
标识符
标识符由字母、数字、下划线组成,不能用数字开头。
C语言虽然不限制标识符的长度,但是它受到不同编译器的限制,同时也受到操作系统的限制。例如在某个编译器中规定标识符前128位有效,当两个标识符前128位相同时,则被认为是同一个标识符。
在标识符中,大小写是有区别的。
C 语言关键字不能做标识符。
关键字
C 语言这种一共有32个关键字:
关键字 | 说明 |
---|---|
auto | 声明自动变量 |
short | 声明短整型变量或函数 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数 |
float | 声明浮点型变量或函数 |
double | 声明双精度变量或函数 |
char | 声明字符型变量或函数 |
struct | 声明结构体变量或函数 |
union | 声明共用数据类型 |
enum | 声明枚举类型 |
typedef | 用以给数据类型取别名 |
const | 声明只读变量 |
unsigned | 声明无符号类型变量或函数 |
signed | 声明有符号类型变量或函数 |
extern | 声明变量是在其他文件正声明 |
register | 声明寄存器变量 |
static | 声明静态变量 |
volatile | 说明变量在程序执行中可被隐含地改变 |
void | 声明函数无返回值或无参数,声明无类型指针 |
if | 条件语句 |
else | 条件语句否定分支(与 if 连用) |
switch | 用于开关语句 |
case | 开关语句分支 |
for | 一种循环语句 |
do | 循环语句的循环体 |
while | 循环语句的循环条件 |
goto | 无条件跳转语句 |
continue | 结束当前循环,开始下一轮循环 |
break | 跳出当前循环 |
default | 开关语句中的“其他”分支 |
sizeof | 计算数据类型长度 |
return | 子程序返回语句(可以带参数,也可不带参数)循环条件 |