C语言之基本数据类型

C语言数据类型之基本类型

C语言编程其中一个比较重要的地方是对数据的组织。我们通常会看到各种结构体类型的数据,就是对数据

的一种组织方式。这样将数据组织起来,有利于我们对数据的操作和管理。合理的数据结构,可以使我们

的程序算法简洁、有条理。

今天,不讲数据结构,而是讲一下组成这些结构体的基本数据。

C语言中涉及到的基本数据类型并不多,共有以下几种:

char(字符型)、short(短整型)、int(整型)、long(长整型)float(单精度浮点型)、double

(双精度浮点型)。可以将这6种基本类型做一下归类:

字符值:char。用于表示字符,如'a','b','c','1','2','3'等等。

整值:short、int、long。用于表示一个整数,如0,1,3,5,56,582等等。

浮点值:float、double。用于表示一个小数,如1.2,1.32,4.563等等。

也就说,在你的程序中,如有想用一个变量来表示字符的,那么就用char来进行声明和定义,如果想用

来表示整数的,就用short、int或者long来进行声明和定义,如果想表示一个小数,那么就使用float

或者double来进行声明和定义。如下:

char c = 'a';

int  i = 54;

float f = 3.3;

PS:以上为了便于理解,对这些变量进行了初始化。


OK,上面只是对这些基本类型数据的一些简单说明,下面再深入一下。

对于整值来说,可以用short声明,也可以用int声明,也可以用long声明,那么这三者有什么区别呢?

对于浮点值来说,可以用float声明,也可以用double声明,这两者又有什么区别呢?

这就涉及到一个叫字节的东西。大家知道,计算机能够识别的数据是二进制数据,即只认识0或1,那么

当我们定义并初始化一个整值变量时,计算机是怎么去进行识别的呢?前人总是很机智的,他们提出了一个

叫进制转换的概念,即可以将十进制(八进制等)数转换为二进制(反之亦然)。那么当我们定义并且初始

化一个变量时,该变量存储到内存中时,就会自动按照二进制的方式去存储了。

那在内存中,一个0或者1称为一个位,那么8个位就为一个字节,这样的话,一个字节(不考虑符号问题)

最大可以表示255(2^8-1),最小可以表示0(具体可以看看二进制和十进制的转换方法)。

那么到这里,大家肯定疑问,一个字节最大才能表示255,那我的变量数值大于255怎么办?那就再多加一

个字节呗,这样两个自己最大就能表示65535(2^16-1)。如果还不够,那么我就再加一个字节,三个字节

最大能表示2^24-1,以此类推。。。

那么short、int、long的区别是什么呢?

short类型的变量为两个字节,int类型的变量为4个字节,long类型的变量为8个字节(皆针对32位系统)。

那到这里,就很明了了,这三者的区别就是能表示的数的最大值不一样,如short最大只能表示65535,而

int最大只能表示2^32-1,long最大只能表示2^64-1。

这样就看你的程序需求,根据变量的值范围进行变量声明。不过在变量值不大于4个字节的基础上,一般都

是用int进行声明了。


那float和double又有什么区别呢?

double的精度比float高,double的有效位达到15位(有些系统是16位),比如可以表示3.12345678912345

这么大精度的数值,而float的精度就只有6位(有些系统是7位),只能表示3.12345这么大精度的数值。

类型    有效位        字节数
****************************************
float    6 – 7        4
****************************************
double    15 – 16    8
****************************************

类型    指数长度    尾数长度
****************************************
float    8 位        23 位
****************************************
double    11 位        52 位
****************************************

float和double在现有项目中用得比较少,暂时只做这些总结,后续若项目中有用到,再进行总结。

关于浮点值和二进制的转换规则还有点迷糊。
发布了18 篇原创文章 · 获赞 13 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u010456460/article/details/54881391
今日推荐