2021.12.6
预处理( gcc -E hello.c -0 hello.i)
- 头文件展开 --不检查语法 可展开任意文件
- 宏定义替换
- 条件编译展开
- 注释移除
编译 ( gcc -S hello.i -0 hello.s)
- 将程序翻译成汇编指令
- 逐行检查语法 (最耗时的过程)
汇编 ( gcc -c hello.s -0 hello.o)
- 将汇编指令翻译成对应的二进制编码
链接( gcc hello.c -0 hello.exe)
- 数据段隐蔽
- 数据地址回填
- 库引入
变量的定义和 变量的声明
定义开辟内存空间 , 声明不会;
在变量使用之前,如果没有变量定义,编译器会找寻最近的一个变量声明,提升为变量定义. 含extern的变量声明无法提升.
格式匹配符
- int %d
- short %hd
- long%ld
- long long%lld
- unsigned int %u
- unsighed short %hu
- unsighed short %lu
- unsighed short %llu
- char %c
- string %s
- float %f
- double %lf
printf("%08.5f",5.66666666667);
- .5表示取五位小数
- 8表示从左到右取八位展示
- 0 表示数据数量小于八位用0填充 "."小数点也算一位. 默认是用空格
05.66667