目录
前文在c语言的基本概念中简单的介绍了一下数据类型,今天在这篇文章中我将详细的介绍具体的内容。
1. 内置类型
内置类型是指任何语言在设计初期定义的类型,而且不同语言也拥有不一样的内置类型, 但是所有 内置类型的定义都和计算机里的运算方式相关。
1.1 字符型
字符类型可以表示单个字符,字符类型是char, char通常是1个字节,其中的内容一般为字符或者数字,多个字符称为字符串, 在C语言中 使用char数组 表示,值得一提的是,这边的数组属于构造类型。
在C语言中,char的本质是一个整数,在输出时,是ASCII码对应的字符。可以直接给char赋一个整数,然后输出时,会按照对应的ASCII字符输出。例如:
这种情况下,在电脑中完成了一个转化。首先在电脑中找到存储A的二进制的值,然后读取ASCII码值95,找到对应的字符A,再完成输出,最终呈现A字符。(char类型都为1字符)
1.2 整型
整型指没有小数部分的数据,可正可负,包括整型常量和整型变量,整型变量又包括短整型、基本整型、长整型,它们都分为有符号和无符号两种版本。
用十六进制符号数字前必须加上 0x。
同样都是20,但是16进制的20为16*2+0=32
注意:更长整型是从c99中引入
C语言的整型类型, 分为有符号 signed 和无符号 unsigned 两种, 默认是 signed.
1.3 浮点型
浮点型是一种数字数据类型,在计算机编程中被广泛应用。它表示实数或者说带有小数点的数,可以用来表示各种精度的数值。浮点型通常由两部分组成:尾数和指数。其中,尾数表示实际的数字部分,指数表示基数的指数。浮点型在计算机内部表示为二进制数,通常使用IEEE标准来定义其格式。
如果想保留小数点,可以使用%f或者%lf
尾数部分可能丢失,造成精度损失,比如:
这种情况下就把小数点后面的数字去掉了,因为浮点数=符号位+指数位+尾数位
1.4 布尔类型
布尔类型为判断真假的一种数据类型,为0或1(即为true or false),运用布尔类型时,需要使用头文件<stdbool.h>
布尔类型通常来说认为即是数字0或者1,所以一般只占一个字节.
因为true为1 false为0,所以true+1=2
2.自定义类型
2.1 数组
数组:数据的组合,每个数据都使用逗号分隔,数据可以是任何类型,数据顺序排列,可以重复。存放在数组中的值称作数组元素,数组在创建的时候可以指定数组的大小和数组的元素类型。[]中的常量值一般用来指定数组的大小,一般来说,如果没有特殊需求,初始化的时候可以不用输入这个值。
一般来说这样即可满足初始化需求。
2.2 结构体
结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据。
如果同时需要多种数据类型,比如整型,数组之类,如果他们之间存在联系而当前的条件不满足描述该物质,则引入新的数据类型——结构体。
比如我们想描述小明,那我们会从身高,体重,性别等入手,这样我们就可以用struct来刻画一个具体的形象。
2.3 枚举
枚举用enum表示,枚举变量可以用来声明一组命名的常数,当一个变量具有多种可能取值的时候,就可以将变量的取值一一列出来,成为枚举类型。
当我们想定义一个day的变量时,day可以为星期一,也可以是星期日,那我们可以用枚举变量。在这种情况下Monday的初始化数值为0,Tuesday为1,以此类推,到星期日为6.
2.4 联合体
联合体与结构体相似,只不过联合体中的数用的是同一空间,而结构体中用的是不同空间。
联合体最大的不一样的地方在于他最大值等于其中最大变量的大小,例如:
如果按一般情况,我们认为这个联合的大小为4+1+4=9个字节,但是实际上他们空间是共享的,只为4个字节。相当于说联合体的个体生存在一起并资源共享,结构体的成员虽然在一起但是各自有自己的生存空间。
好了,文章到这边基本上介绍完了数据类型,作者制作不易,希望能收获你的喜欢和关注