- C程序编译过程
预处理:宏定义展开、头文件展开、条件编译、删除注释、不检查语法;-E .i
编译:检查语法,将C语言转成汇编语言;-S .s
汇编:将汇编文件转成二进制码;-C .o
链接:将C语言依赖库链接到程序中
- 常见的代码问题:
编辑时异常;编译时异常;运行时异常;
- CPU内部结构与寄存器:
寄存器是CPU内部最基本的控制单元
CPU对外是通过总线(地址、控制、数据)来和外部设备交互的
- 寄存器、缓存、内存三者的关系:
1.按离CPU距离 ,由近及远:寄存器、缓存、内存。
2.CPU计算时,先把数据读到内存,再把即将要用到的数据读到寄存器。于是CPU<-> 寄存器<->缓存<->内存。
3.缓存存在的原因:如果经常操作内存中的同一地址的数据,就会影响速度。于是 就在寄存器与内存之间设置一个缓存。因为缓存提取的速度远高于内存。
- 汇编语言:
Mov移动
Add添加
Push压栈
Pop出栈
Call调用
- 断点和单步调试:
- 集成化开发环境:(IDE)
用于提供程序开发环境的应用程序。
- 数据类型:
见C++
%d :输出有符号的十进制int类型
%o:输出八进制int类型
%u:输出十进制无符号数
%x:输出十六进制,字母以小写输出
%X:输出十六进制,字母以大型写输出
- Scanf安全问题解决:
#define _CRT_SECURE_NO_WARNINGS
Pragma warning(disable:4996)
- 进制转换:
二进制:
- 当前计算机系统使用的基本上是二进制系统,数据在计算机中主要以补码 的形式存在
- Bit(比特):一个二进制代表一位,一个位只能表示0或1两种状态。数据 传输习惯以“位”(bit)为单位。
- Byte(字节):一个字节为8个二进制,称为8位,计算机中存储的最小单 位是字节。数据存储习惯以“字节”为单位。
十进制:以正常数字1-9开头,如123;
八进制:以数字0开头,如0123;
十六进制:以0x开头,如0x123;
二进制:C语言不能直接书写二进制数。
计算机内数据存储的方式:原码、补码、反码、补码的意义、数值溢出;
在计算机系统中,数值一律用补码来存储,主要原因是:
- 同意了零的编码;
- 将符号位和其他位统一处理;
- 将减法运算转变为加法运算;
- 两个补码表示得数相加时,如果最高位(符号位)有进位,则进位被舍弃
数值溢出:
- 运算符:
- 类型转换:
数据有不同的类型,不同类型数据之间进行混合运算是必然涉及到类型的转换问题
- 类型转换的方法:
自动转换(隐式转换):遵循一定的的规则,右边一系统自动完成
强制类型转换:把表达式的运算结果强制转换成所需的的数据类型
- 类型转换的原则:
占用内存字节数少(值域小)的类型,向占用内存字节数多(值域大)的类型转换,以保证精度不降低。
高 Double<--float
|
Long
|
Unsigned int
|
低 Signed int<---char,short