C语言数据存储和编译链接
1.数据存储
1. 整型存储
整型在内存中存补码。
无符号整数的原反补都是一样的。
有符号整型最高位用于表示正负,1表示负数,0表示正数。
2.大小端
根据字节在内存地址中的存储来判断是大端还是小端。
大端就是高字节存在低地址处,低字节存在高地址处。
小段是高字节存高地址,低字节存低地址。
判断方法
1.强转类型法:将int强转成char类型,即仅取int的低字节给char
2.直接取址法:
3.联合体法:利用联合体共用一个地址
3.整型提升和截断
在char类进行计算时,暂时提升为int类进行计算。
如果是无符号数:高位全补0
有符号数:高位全补符号位
char a=5;
char b=127;
a+b=-124;
a:00000000 00000000 000000000 00000101
b:00000000 00000000 000000000 01111111
c:1000 0100->11111111111111111111 1000 0100//补码
源码:1000000000000000000 0111 1100 == -124
截断:大字节的转给小字节的,按照小字节截断。
2.编译链接
1.宏函数
四个阶段:预处理,编译,汇编,链接
预处理:头文件展开,去注释,宏替换
编译:将C语言代码转换为汇编代码,词法,语法,语义分析
汇编:将汇编指令转换成二进制指令
链接:将多个目标文件和库合并成可执行文件。