C语言进阶-数据的存储

目录

一.自我介绍

二.整形家族

三 浮点数家族

三.指针型变量

四.存储规则

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码转换。

C语言进阶-数据的存储_第1张图片

 根据图中我们可以看出,数据在二进制前提下,是由00000000~11111111的数据范围,当表示无符号类型时,大小为0~256,第一位表示数据位,而当表示有符号的类型时,第一位为符号位,表示正负,总而言之char类型的存储数据范围为-127~126。

2.short型

short型数据类型和char类型的存储类似,只是由8个bit位变成了16个bit位,也就是占2个字节,

C语言进阶-数据的存储_第2张图片 

从图中我们不难看出,由16个bit位组成整个short数据类型时,二进制表示下是由0000000000000000~1111111111111111,大小为0~65535,这是表示无符号类型时,所能表示的数据范围,而表示有符号的数据类型时,数据类型的范围为-32768~-32767。

3.int型

int型所占的数据内存大小为4个字节,也就是32个bit位,根据数据的存储规则,如下图所示:

C语言进阶-数据的存储_第3张图片

有图不难看出,数据的存储大小为由二进制表示下为由00000000000000000000000000000000~11111111111111111111111111111111 

在有符号类型的前提下,第一位表示符号位,则大小为由16进制表示下为0xFFFFFF。

4.其他数据类型 

指针型变量在32位机器下占有4个字节,存储方式和int型相似,浮点型数据在内存中的存储方式后期会单独写一篇介绍到。

五.大小端存储

 大小端存储代表的是数据在内存中存放时的顺序问题。

1.大端存储

例如如下代码

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;
}

运行结果如下图所示: 

C语言进阶-数据的存储_第4张图片 

 

 

你可能感兴趣的:(零基础学好C语言,c语言,算法,c++)