1. gcc的编译过程
1.1 预处理
处理和 " # " 相关的代码
gcc -E filename.c -o filename.i
1. 头文件
2. 宏定义
3. 条件编译
1.2 编译
将c语言代码编译成汇编代码
gcc -S filename.c -o filename.s
1.3 汇编
将汇编代码编译成二进制代码
gcc -c filename.c -o filename.o
1.4 链接
将多个二进制代码链接成一个可执行代码
gcc filename.c o filename
2. 进制转换
2.1 二进制、八进制、十六进制 -> 十进制 对应位 * 对应位的权值再求和
2.2 十进制 -> 二进制、八进制、十六进制 十进制数除以进制数得到的余数逆序排列
2.3 八进制一位对应二进制三位
十进制一位对应二进制四位
3. 数据的存储
3.1 正数存对应的补码(与原码相同)储存在内存中
3.2 负数经过原码、反码、补码存储在内存中
-123(先去掉符号位)
原码:111 1011
反码:000 0100
补码:000 0101
4. 基本数据类型
4.1 整形(short int long)
signed short -2^15 ~ 2^15-1
unsigned short 0 ~ 2^16-1
signed int -2^31 ~ 2^31-1
unsigned int 0 ~ 2^32-1
signed long -2^63 ~ 2^63-1
unsigned long 0 ~ 2^64-1
4.2 字符型
signed char -128 ~ 127
unsigned char 0 ~ 255
存储字符在ASCII码表中对应的二进制数到内存中
4.3 浮点型(浮点数类型均为有符号,没有无符号类型)
float 4字节 存储类型(1符号位+8指数位+23尾数位)
double 8字节 存储类型(1符号位+11指数位+52尾数位)
浮点数 -> 转换成为对应的二进制形式 -> 二进制科学计数法形式
-> 获得尾数位(小数点后) -> 获得指数位(+127 float +1024 double )
-> 存入浮点数类型中(float: 1符号位 + 8指数位 + 23尾数位 double: 1符号位 + 11指数位 + 52尾数位)
4.4 缺省类型(void)
4.5 bool类型(逻辑类型)
5. 构造数据类型
6. 变量和常量
6.1 常量:在程序运行过程中值不能被改变的量称为常量
1. 整形常量(默认为signed int)
2. 浮点型常量(默认为double)
3. 字符型常量
4. 字符串常量
5. 标识常量(宏定义)
6.2 变量:在程序运行过程中值可以发生改变的量称为变量
1. 变量名要求
1.变量名只能由字母、数字、下划线构成,不能以数字开头
2.变量名不要与C语言关键字重名
3.变量名最好不要与库函数重名
4.变量名最好是见名知意
2. 变量初始化
定义变量的时候为变量赋初值
注意:
0 : 0 -> 0000 0000
'0' : 字符0 -> 48 -> 0011 0000
'\0' : 字符\0 -> 0 -> 0000 0000
'\0' 和 0 是等价的
'0' 和 48 是等价的