hello,米娜桑。
学习C语言这么久了,大家应该在脑海中形成系统化的体系了,下面我就跟大家唠唠数据类型。
我们已经学习了基本的内置类型:
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长整的整型
float //单精度浮点数
double //双精度浮点数
类型的意义:
1、使用这个类型开辟内存空间的大小(大小决定了适用范围)
2、如何看待内存空间的视角
1.数据类型介绍
1.1类型的基本归类
整型家族:
char
unsigned char
signed char
short short s1==signed short s1//默认为有符号的,最高位为符号位
unsigned char[int] 最高位0表示正数,最高位1表示负数
signed char[int] unsigned short//无符号的,最高位是数据位f
int
unsigned int
signed int
long
unsigned long
signed long
浮点型家族:
float
double
构造类型:(自定义类型)
数组类型
结构体类型 struct
枚举类型 enum
联合类型 union
指针类型:
int *pi;
char *pc;
float *pf;
void *pv;
空类型:
void表示空类型(无类型)
通常应用于函数的返回类型,函数的参数,指针类型。
2.整型在内存中的存储
2.1原码、反码、补码
计算机中的整数有三种表示方法,即原码、反码和补码。
三种表示方法均有符号位和数值为两部分,符号位都是0表示“正”,而1表示“负”。
正整数的原码、反码、补码相同。
负整数的原码、反码、补码不同。
反码
将原码的符号位不变,其他位依次按位取反就可以得到。
补码
反码+1就得到补码。
使用原码计算是错误的
eg:1+(-1)
1—>00000000000000000000000000000001
-1—>10000000000000000000000000000001
1+(-1)—>10000000000000000000000000000010—>-2
使用补码计算
eg:1+(-1)
1—>00000000000000000000000000000001
-1—>1111111111111111111111111111111111111
1+(-1)—>00000000000000000000000000000000
在计算机系统中,数据一律用补码来表示和存储,原因在于,使用补码,可以将符号位和数值域统一处理;
同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
所以,对于整型来说:数据存放内存中其实存放的是补码。
2.2大小端字节序存储
大端字节序存储:把一个数据低位字节处的数据存放在高地处,把高位字节处的数据存放在地址处。
小端字节序存储:把一个数据的低位字节处的数据存放在低地址处,把高位字节处的数据存放在高地址处。