剖析:数据类型

目录

​编辑

1.  内置类型

1.1  字符型

1.2  整型

1.3  浮点型

1.4  布尔类型

2.自定义类型

2.1  数组

2.2  结构体

2.3  枚举

2.4  联合体


前文在c语言的基本概念中简单的介绍了一下数据类型,今天在这篇文章中我将详细的介绍具体的内容。

9434bb6b1ac34b499439f197b6e8f740.png

1.  内置类型

内置类型是指任何语言在设计初期定义的类型,而且不同语言也拥有不一样的内置类型, 但是所有 内置类型的定义都和计算机里的运算方式相关。

1.1  字符型

字符类型可以表示单个字符,字符类型是char, char通常是1个字节,其中的内容一般为字符或者数字,多个字符称为字符串, 在C语言中 使用char数组 表示,值得一提的是,这边的数组属于构造类型。

在C语言中,char的本质是一个整数,在输出时,是ASCII码对应的字符。可以直接给char赋一个整数,然后输出时,会按照对应的ASCII字符输出。例如:

c1399543ab17409f838b84bdf04da719.png

这种情况下,在电脑中完成了一个转化。首先在电脑中找到存储A的二进制的值,然后读取ASCII码值95,找到对应的字符A,再完成输出,最终呈现A字符。(char类型都为1字符)

1.2  整型

整型指没有小数部分的数据,可正可负,包括整型常量和整型变量,整型变量又包括短整型、基本整型、长整型,它们都分为有符号和无符号两种版本。

用十六进制符号数字前必须加上 0x。

1d655a3af0d2489291678311e3510d29.png

同样都是20,但是16进制的20为16*2+0=32

b49dd62785e040a28d0bca2c6ebec44d.png

注意:更长整型是从c99中引入

C语言的整型类型, 分为有符号 signed 和无符号 unsigned 两种, 默认是 signed.

signed 关键字,表示⼀个类型带有正负号,包含负值;
unsigned 关键字,表示该类型不带有正负号,只能表示零和正整数。
整数变量声明为 unsigned 的好处是,同样长度的内存能够表的最大整数值,增大了⼀倍。比如16位的signed short int 的取值范围是:-32768~32767,最大是32767,而unsigned short int 的取值范围是:0~65535,最大值有65525。
因为计算机中16位存储的长度有限,如果只能为零或者正整数时,空出的那部分负数的空间可以留给32767以后的数,从而可以达到65525.
18d8c7d4de5d4c6089411be11c63155b.png

1.3  浮点型

浮点型是一种数字数据类型,在计算机编程中被广泛应用。它表示实数或者说带有小数点的数,可以用来表示各种精度的数值。浮点型通常由两部分组成:尾数和指数。其中,尾数表示实际的数字部分,指数表示基数的指数。浮点型在计算机内部表示为二进制数,通常使用IEEE标准来定义其格式。

浮点型有float(单精度),double(双精度)两种,其中float类型可以到小数点后6位,double为15位

如果想保留小数点,可以使用%f或者%lf

尾数部分可能丢失,造成精度损失,比如:

dd87eb8ab17249379560168ecbd373b7.png

这种情况下就把小数点后面的数字去掉了,因为浮点数=符号位+指数位+尾数位

1.4  布尔类型

布尔类型为判断真假的一种数据类型,为0或1(即为true or false),运用布尔类型时,需要使用头文件<stdbool.h>

布尔类型通常来说认为即是数字0或者1,所以一般只占一个字节.

因为true为1 false为0,所以true+1=2

2.自定义类型

2.1  数组

数组:数据的组合,每个数据都使用逗号分隔,数据可以是任何类型,数据顺序排列,可以重复。存放在数组中的值称作数组元素,数组在创建的时候可以指定数组的大小和数组的元素类型。[]中的常量值一般用来指定数组的大小,一般来说,如果没有特殊需求,初始化的时候可以不用输入这个值。

db92adef52c34de68b5190c1dd3b870c.png

一般来说这样即可满足初始化需求。

2.2  结构体

结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据。

如果同时需要多种数据类型,比如整型,数组之类,如果他们之间存在联系而当前的条件不满足描述该物质,则引入新的数据类型——结构体。

67e961cf65df46ec9b15c066586d92bb.png

比如我们想描述小明,那我们会从身高,体重,性别等入手,这样我们就可以用struct来刻画一个具体的形象。

2.3  枚举

枚举用enum表示,枚举变量可以用来声明一组命名的常数,当一个变量具有多种可能取值的时候,就可以将变量的取值一一列出来,成为枚举类型。

8143ed3150ba485b9d2d78172c6c7cd5.png当我们想定义一个day的变量时,day可以为星期一,也可以是星期日,那我们可以用枚举变量。在这种情况下Monday的初始化数值为0,Tuesday为1,以此类推,到星期日为6.

2.4  联合体

联合体与结构体相似,只不过联合体中的数用的是同一空间,而结构体中用的是不同空间。

054abf170b0f40399b0715f5bab13bdb.png

联合体最大的不一样的地方在于他最大值等于其中最大变量的大小,例如:

680a762b364b487685eceaf1d46c31a7.png

如果按一般情况,我们认为这个联合的大小为4+1+4=9个字节,但是实际上他们空间是共享的,只为4个字节。相当于说联合体的个体生存在一起并资源共享,结构体的成员虽然在一起但是各自有自己的生存空间。

好了,文章到这边基本上介绍完了数据类型,作者制作不易,希望能收获你的喜欢和关注 68ffdcfbee5143c49a83a0a878c54c78.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值