目录
一.自我介绍
二.整形家族
三 浮点数家族
三.指针型变量
四.存储规则
1.char类型
2.short型
3.int型
4.其他数据类型
五.大小端存储
1.大端存储
2.小端存储
六.总结
一.自我介绍
哈喽,大家好,我是大鹏,今天我们继续C语言的学习,今天的内容将讲到数据在内存中的存储问题。
char:虽然是字符型,但是字符类型存储的时候,存储字符的ASCII码值,ASCII码值是整数也分正负号
unsigned char
signed char
int
unsigned int
signed int
long
unsigned long
signed long
这里的unsigned代表无符号,signed代表有符号有符号可以省略
三 浮点数家族三.指针型变量float
double
四.存储规则char*
short*
int*
void*
1.char类型
在数据的存储规则中,首先这些数据都是存储在内存中的栈区,而内存中的栈区是由一个个连续的bit位组成的。
char类型的变量占有1个字节的内存空间,也就是8个bit位.根据下图可以观察char类型的数据存储原理,char类型的变量在内存中存储的也是整数,转换为符号时由ASCII码转换。
根据图中我们可以看出,数据在二进制前提下,是由00000000~11111111的数据范围,当表示无符号类型时,大小为0~256,第一位表示数据位,而当表示有符号的类型时,第一位为符号位,表示正负,总而言之char类型的存储数据范围为-127~126。
2.short型
short型数据类型和char类型的存储类似,只是由8个bit位变成了16个bit位,也就是占2个字节,
从图中我们不难看出,由16个bit位组成整个short数据类型时,二进制表示下是由0000000000000000~1111111111111111,大小为0~65535,这是表示无符号类型时,所能表示的数据范围,而表示有符号的数据类型时,数据类型的范围为-32768~-32767。
3.int型
int型所占的数据内存大小为4个字节,也就是32个bit位,根据数据的存储规则,如下图所示:
有图不难看出,数据的存储大小为由二进制表示下为由00000000000000000000000000000000~11111111111111111111111111111111
在有符号类型的前提下,第一位表示符号位,则大小为由16进制表示下为0xFFFFFF。
4.其他数据类型
指针型变量在32位机器下占有4个字节,存储方式和int型相似,浮点型数据在内存中的存储方式后期会单独写一篇介绍到。
大小端存储代表的是数据在内存中存放时的顺序问题。
例如如下代码
int a=0x11223344;
在大端存储的方式时在内存中为:
高位在高端,低位在低端
2.小端存储例如如下代码在内存中的存储方式
int a=0x11223344;
在小端存储的方式时在内存中为:
根据数据的存储规则大家可以运行以下代码,便可以体会到数据存储方式的缘由,导致输出的数据会与定义的数值不相同
#include
int main()
{
int a=1;
signed char b=-1;
unsigned char c = -1;
printf("a=%d b=%d c=%d",a,b,c);
return 0;
}
运行结果如下图所示:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)