前言
在我之前的文章里,讲过了整数的二进制表示形式有三种,即原码、反码、补码三种形式以及他们的相互转换方式,具体可见链接: C语言初阶操作符学习笔记,本篇文章将更加深入的讲解数据类型以及他们是如何存储的。
数据类型介绍
数据类型的基本归类
根据数据在内存中的存储方式,我们可以将数据分为两大家族:整形家族和浮点型家族。
整形家族
整形家族包括:char,short,int,long,long long(C99)。由于字符在内存里存储的是他们的ASCII码值,所以将char类型归结到整型家族里;long long 类型是在C99标准中加入的。这五种整形又被细分为:
char:
char / signed char / unsigned char
short(short int):
signed short / unsigned short (short等价于signed short)
int:
signed int / unsigned int (int等价于signed int)
long(long int):
signed long / unsigned long (long等价于signed long)
long long(long long int):
signed long long / unsigned long long (long long等价于long long short)
在我之前的文章里除了char未介绍,其他整型数据类型的大小以及取值范围,我已经介绍过了,链接放在这里(部分数据类型的大小以及转换说明符的用法),现在我重点说一下char类型。
char是和signed char等价还是unsigned char等价,这在C标准里是未定义的,等价于哪一个取决于编译器,本篇文章使用的是VS2022编译器,所以char=signed char。
| 类型 | 大小(字节) | 数值范围 |
|---|---|---|
| char | 1 | -2^7 - 2^7-1 |
浮点型家族
浮点型家族包括两类:float 类型和 double 类型。
| 类型 | 大小(字节) |
|---|---|
| float | 4 |
| double | 8 |
关于这两种类型的精度,取值范围等特性在头文件 float.h中可以找到。
大小端字节序
除了char类型变量只占一个字节的内存大小,其他数据类型都至少占据2个以上的字节大小,又因为在内存里以字节为单位存储数据,那么存储的时候接涉先后顺序,举个栗子:
#include <stdio.h>
int main()
{
int a = 10;
printf("%d", a);
return 0;
}
代码如上,整型变量a存储整数10于其中,即:变量a向内存申请了4个字节大小的内存空间,用
本文深入探讨了C语言中数据类型,特别是整形和浮点型家族,包括它们的存储方式、大小端字节序以及浮点数的存储和读取原理。通过对内存中数据的分析,阐述了不同数据类型如何在内存中以字节为单位存储,以及浮点数的特殊存储格式和读取规则。
最低0.47元/天 解锁文章

1805

被折叠的 条评论
为什么被折叠?



