C语言的数据类型介绍

我们在项目中创建(定义)变量、数组、函数、指针、结构体、联合体、枚举(等等)时,首先要确定的就是它们的数据类型。

在C语言中,数据类型是计算机处理数据的重要依据。数据类型分为两类,第一类为内置类型,第二类为自定义类型。下面分别进行介绍。

一、内置类型

1.int (整型):大小为4个字节,即32bit,即32个二进制位。四字节大小时取值范围为[-2147483648,2147483647]

PS:16位系统中int的大小为2个字节。

2.short(短整型):大小为2个字节,即16bit,即16个二进制位。取值范围是[-32768,32767]

3.long(长整型): 大小为4个字节(不小于四个字节),即32bit,即32个二进制位。取值范围是[-2147483648,2147483647]

4.long long(更长的整型):大小为8个字节,即64bit,即64个二进制位。取值范围是[-9223372036854775808,9223372036854775807]

上述四种类型只能存放整数(二、八、十、十六进制均可),不能存放小数,若强行存放,会将小数取整数。

例子:

int a = 100;//表示十进制
short b = 0xFF;//0x表示16进制
long c = 030;//0表示8进制
long long d = 0b11111111;//0b表示2进制

5.char (字符型):大小为1个字节,即8bit,即8个二进制位。

                                  用于存放字符、整数(-128~127),正整数同样可以用各种进制表示。

所谓字符,就是ASCII码表中的字符,正整数0~255对应着不同的字符。ASCII表可自行上网查看。

例子:

char a = 'a' ;
char b = 98 ;
char c = 'a' - 'A';

其中,变量a储存的是字符‘a’,对应储存的数字是97,变量b储存的是98,对应储存的是字符‘b’,因为在ASCII中98对应着小写字母‘b’

而变量c的大小为32,对应的是空格。因为字符作运算时会转换为ASCII码对应的数字进行加减乘除。

6.float(单精度浮点型):大小为4个字节,即32bit,即32个二进制位。

                                      用于存放小数。

7.double(双精度浮点型)大小为8个字节,即64bit,即64个二进制位。

                                       用于存放小数。

其中,单精度和双精度有效数字位数不同。前者为8位,后者为16位。

例子:

可以发现,float储存小数的精度明显小于double

8._Bool 或 bool(布尔类型) :只能存放0和1这两个数,一般使用false和true来表示0和1, 其中false==0;true==1;

_Bool不需要引入头文件就可以使用,bool是_Bool类型的小名,需引用头文件<stdbool.h>才可以使用,否则会报错(false与true也需引入<stdbool.h>才可以使用)

例:

布尔类型多用于判断条件的对错

附:

1.unsigned int ,unsigned short,unsigned char,unsigned long,unsigned long long,unsigned char,unsigned float,unsigned double, 均是在上述条件的基础上,限制只能表示正数,这有助于每个基础类型储存更大的数。
2.int,short,char,long,long long,float,double,均可以用signed ****表示,例:signed int 等同于

int。

二、自定义类型

自定义类型包括数组、结构体、联合体、枚举,他们同样是用上述内置类型定义的,但是他们的大小不固定。

例如,我们定义如下数组:

#define num 10
int arr1[num]={0};
char arr2[num/2]={0};

arr1数组有十个int类型的元素,故其大小为40字节,但这代表所有数组的大小都是40字节吗?显然不是。arr2数组有五个char类型的元素,其大小为5字节。显然,数组的大小与其元素个数和类型有关,并非固定值。

再例如,我们定义如下结构体类型:

struct Pro
{
   char a;
   int  b;
   double c;    
};
struct Pro p1;

结构体p1的结构体类型由我们自己定义,在该结构体类型中,有一个char类型变量a,一个int类型变量b,以及一个double类型变量c,故结构体p1的理论大小为13字节(但实际上大小为16字节,这与结构体的内存对齐有关,这里不多解释)同样,我们如果另外定义一个结构体类型,其内部成员与上述结构体类型不同,那么它的大小同样是不同的。

总结就是,自定义类型可以让我们更加的灵活地储存数据,使代码更加个性化,更加有助于不同算法的实现。

结语:编者水平有限,C语言学习中,若发现文章有误或不严谨的地方,敬请海涵,并希望您能够在评论区指正。

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值