首页 > 编程知识 正文

c语言中5种数据类型的存储长度,c语言中5种基本数据类型存储长度

时间:2023-05-06 02:22:12 阅读:275108 作者:4355

  其实学习C语言的时候有一件很头疼的事就是各种各样的数据类型,不同的场合不同的用途不同的数据要使用不同的数据类型,那又为什么要分出这么多种类型呢,因为类型决定了开辟空间的大小,开辟空间的大小又决定了存储的范围。今天,就数据类型这个问题我们来掰扯掰扯。

  C语言的内置数据类型大体上可以分为两类,整形家族与浮点数家族。

1. 整形家族 1.1 字符类型 char

  为什么要把一个装字符的数据类型归到整形家族中呢,因为在C语言的编码集是ASCII码,char类型存储字符是存储字符的ASCII值,在本质上来讲也是存储数字,所以char也属于整形家族的一员。

  定义:存放字符的数据类型

  大小:1字节

  分类:

  char  signed char  unsigned char

  char与signed char不一定一样,具体char缺省代表的是有符号还是无符号,由编译器决定。

1.2 短整型 short

  大小:2字节

1.3 整型 int

  大小:4字节

2.4长整形 long

  大小:4/8字节

  long类型在内存中占几个字节与所使用的机器有关,在32位的机器上,long在内存中占4字节,而64位机器上,long占8字节。

2.5 long long

  大小:4/8字节
  C语言规定中没有明确long long 的具体长度,只是定义 long long的长度大于等于long即可,具体由编译器决定。

2. 浮点数家族

   整形家族在内存中是以二进制补码的形式存储的,而浮点型却是大相径庭的。

根据国际标准IEEE(电⽓和电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表示成下⾯的
形式:

(-1)S * M * 2E(-1)

s表示符号位,当s=0, V为正数;当s=1, V为负数。M表示有效数字,⼤于等于1,⼩于2。
2E表示指数位。

举例:

 ⼗进制的5.0,写成⼆进制是 101.0 ,相当于 1.01×2^2。

  那么,按照上⾯V的格式,可以得出s=0, M=1.01, E=2。

 ⼗进制的-5.0,写成⼆进制是 -101.0 ,相当于 -1.01×2^2。

  那么, s=1, M=1.01, E=2。

2.1 单精度浮点型 float

  大小:4字节

IEEE 754规定: 对于32位的浮点数,最⾼的1位是符号位s,接着的8位是指数E,剩下的23
位为有效数字M。

2.2 双精度浮点型 double

  大小:8字节

  对于64位的浮点数,最⾼的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。

long double

  大小与long long 一样,长度比long长即可,具体由编译器决定

  虽然C语言给我们提供了这么多的内置类型,但是在实际工程中,单单这些内置类型是远远不够的,所以又有了构造类型这一概念。

3. 构造类型

  我们把构造类型分为如下几种

  数组类型  结构体类型 struct  枚举类型 enum  联合(共用体)类型 union //成员共用一片存储空间,同一时间只能使用其中一个成员 union Un { char c; int i; }; int main() { union Un u; printf("%dn",sizeof(u)); //4 return 0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。