目录
1.数据的类型
基本的内置类型及它们所占空间的大小(字节):
char //字符数据类型 1
short //短整型 2
int //整形 4
long //长整型 4/8
long long //更长的整形(c99标准) 8
float //单精度浮点数 4
double //双精度浮点数 8
1.1数据类型的基本归类
整形家族:
char (字符的本质是ASCII码值所以看作整形)
int
short
long
long long
其中它们又细分为:signed型和unsigned型,即有符号和无符号型。在编译器中使用时默认为有符号型(char不一定,取决于不同编译器的实现)。
浮点型家族:
float
double
其中float的精度较低,存储的数值范围较小,double则更高些。
构造类型(又称自定义类型):
数组
结构体 struct
联合体 union
枚举 enum
指针类型:
int*
char*
void*
float*
空类型:
void表示空类型(无类型)
通常应用于函数的返回类型,函数的参数,指针类型。
2.整形在内存中的存储
2.1原码、补码、反码
整数的2进制表示有三种表示形式:
1. 正的整数,原码、反码、补码相同
2. 负的整数,原码、反码、补码是需要计算的
原码:直接通过正负的形式写出的二进制序列就是原码
反码:原码的符号位不变,其他位按位取反得到的就是反码
补码:反码+1就是补码
整数在内存中存放的是补码的二进制序列
例:
int a=10;
//00000000000000000000000000001010 -原码
//00000000000000000000000000001010 -补码
//00000000000000000000000000001010 -反码
int b=-10;
//10000000000000000000000000001010 -原码
//11111111111111111111111111110101 -反码
//11111111111111111111111111110110 -补码
2.2大小端
大端【字节序】存储:
把一个数据的高位字节序的内容存放在低地址处,把低位字节序的内容放在高地址处,就是大端字节序存储。
小端【字节序】存储:
把一个数据的高位字节序的内容存放在高地址处,把低位字节序的内容放在低地址处,就是小端字节序存储。
例:
0x11 22 33 44
我们常用的x86结构就是小端模式。
(ps:signed char取值范围为-128~127,unsigned char取值范围是0~255。)