数据类型的存储
数据类型介绍
内置类型
char short
int long
long long
float double
类型的基本归类
整数类型
char char是不是signed char 取决于编译器
unsigned char
signed char
short
unsigned short
signed short
int [signed]
unsigned int
signed int
long
unsigned long
signed long
浮点型
float double
构造类型:(自定义类型)
数组
结构体 struct
枚举 enum
联合 union
指针类型:
int*
char*
float*
void*
空类型:
void表示无类型
整形在内存中的存储
原码,反码,补码
正数的原反补相同
对于整形来说:数据存放在内存中是以补码的形式
使用补码,可以将符号位和数值域统一处理;同时,加法减法也可以统一处理,补码和原码相互转换,其运算过程相同。
大小端存储
大端:大端字节序存储,把一个数据的低位字节的数据,存放在高地址处;
把高位字节的数据放在低地址处
小端:小端字节序存储,把一个数据的低位字节的数据,存放在低地址处;
把高位字节数放在高地址处
判断是否大小端
int a = 1;
char* p = (char*)&a;
if (*p == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
有无符号位的取值范围
char的取值范围:
有符号的 -128~127 ( -2^7~2^7-1 )
无符号的 0~255 (0~2^8-1)
short的取值范围:
有符号的 -2^15~2^15-1
无符号的 0~2^16-1
%d 打印有符号数,结果是10进制的
%u 打印无符号数,结果也是10进制