抽象的说,数据是对客观事物的一种描述。这种描述是采用了计算机能够识别,存储和处理的的形式。程序能够处理的数据对象被划分成一些组或一些集合。属于同一集合的个数据对象具有相同的性质。我们可以对它们做相同的操作,他们都采用相同的编码方式等等一些性质。
计算机硬件也会把数据划分成一些类型,对于不同的数据类型,有不同的指令集来处理对应的数据类型。我们知道,计算机中的数据都是二进制补码形式,对于同样的一段二进制补码,计算机会根据这段二进制补码对应的数据类型来解析这段二进制补码。也就是说,同样的二进制补码,因为数据类型的不同,会被解析成不同的形式。
数据类型可以分为基本数据类型,构造数据类型,指针类型,空类型。
其中,构造数据类型可以拆分为基本数据类型。其它数据类型,也都可以拆分为基本数据类型。所以,下面要着重介绍的是基本数据类型。
在C语言里,基本数据类型可以划分为字符型,整形,浮点型。我们可以用集合的角度来分析这些数据类型
字符型(char)
字符型数据对应着字符集,是的。我们见到的大多数字符,对应着C语言里的字符型数据。英文字母,标点符号,数字都可以当作字符看待。C语言里采用ASKII字符编码来对字符型数据进行编码,ASKII字符编码,用二进制补码代表字符,在ASKII字符集里面,48表示'0',65表示'A',97表示‘a’。经典的ASKII字符集只有128个元素,经过扩充,现在的ASKII字符集里共有256个元素。所以,字符型数据在存储上占一个字节,也就是8位二进制数。
我们用关键字char来声明字符型数据。char,字母charactor的缩写。
整型(int)
整型数据对应着整数集,当然这么说好像不太对。整型数据是我们使用的最多的数据类型之一,所以,为了更好,更科学的使用这种数据类型,C语言里给整形数据加了不少——修饰符,(有种欲练神功,挥刀自宫的感觉)。类型修饰符大概有unsigned,short,long这么三种。我们用关键字int来声明整型数。在64位系统内,加上各种修饰符的int型数据范围如下:
long int(长整型):- 2147483648~2147483647
short int(短整型):-32768~32767
unsigned int(无符号整型):0~4294967295
unsigned short int(无符号短整型):0~65535
unsigned long int(无符号长整形):
int(整型):- 2147483648~2147483647
在32位系统内,int型数据在存储上占2个字节,在64位系统内,int型数据在存储上占4个字节。见到这么多类型,其实日常使用最多的还是int型数据(不加类型修饰符)。但如果想编写出高效的程序,对其它几种数据类型还是要了解一下的。
浮点型(float,double)
浮点型数据对应实数集,只不过这个实数集可能和数学里的实数集不太一样,它能表示的数据依旧是有限的,它最多只能表示小数点后的六位数。只不过对于平时精度要求不太高的计算,浮点型数据还是可以满足我们的需求。在做计算的时候,小数点后保留的位数越多,我们的计算也就越精确。double和float有什么区别呢,double型数据存储了更多的位,所以,double型数据的精度高于float型,但在运行速率方面,float型高于double型。
尽管基本数据类型只有这么几种,但这足以建起大厦。之后会分享如何使用这些数据类型,以及C语言里的运算符。