大家已经知道,数据是存放在内存中的,变量是给这块内存起的名字,有了变量就可以在计算机中找到这份数据,但接着下一个问题来了,我们应该如何才能使用它呢?这就需要引出今天要讲的概念:数据类型。一、数据类型(Data Type)在前文的教程中已经讲过,诸如数字、文字、符号、图形、音频、视频等数据都是以二进制形式存储在内存中的,它们并没有本质上的区别,那么,00010000 该理解为数字16呢,还是图像中某个像素的颜色呢,还是要发出某个声音呢?如果没有特别指明,我们并不知道。
也就是说,内存中的数据有多种解释方式,使用之前必须要确定;上面的int a就表明--这份数据是整数,不能理解为像素、声音等。int有一个专业的称呼,叫做数据类型(Data Type)。
顾名思义,数据类型用来说明数据的类型,确定了数据的解释方式,让计算机和程序员不会产生歧义。在C语言中,有多种数据类型,例如:

说  明

字符型

短整型

整型

长整型

单精度浮点型

双精度浮点型

无类型

数据类型

char

short

int

long

float

double

void

这些是最基本的数据类型,是C语言自带的,如果我们需要,还可以通过它们组成更加复杂的数据类型,后面我们会一一讲解。

二、连续定义多个变量

为了让程序的书写更加简洁,C语言支持多个变量的连续定义,例如:

int a, b, c;
float m = 10.9, n = 20.56;
char p, q = '@';

连续定义的多个变量以逗号“,”分隔,并且要拥有相同的数据类型;变量可以初始化,也可以不初始化。

三、数据长度(Length)

所谓数据长度(Length),是指数据占用多少个字节。占用的字节越多,能存储的数据就越多,对于数字来说,值就会更大,反之能存储的数据就有限。多个数据在内存中是连续存储的,彼此之间没有明显的界限,如果不明确指明数据的长度,计算机就不知道何时存取结束。例如我们保存了一个整数1000,它占用4个字节的内存,而读取时却认为它占用3个字节或5个字节,这显然是不正确的。
所以,在定义变量时还要指明数据的长度。而这恰恰是数据类型的另外一个作用。数据类型除了指明数据的解释方式,还指明了数据的长度。因为在C语言中,每一种数据类型所占用的字节数都是固定的,知道了数据类型,也就知道了数据的长度。
在32位操作系统环境中,各种数据类型的长度一般如下:

说  明

字符型

短整型

整型

长整型

单精度浮点型

双精度浮点型

数据类型

char

short

int

long

float

double

长  度

1

2

4

4

4

8

C语言有多少种数据类型,每种数据类型长度是多少、该如何使用,这是每一位C程序员都必须要掌握的,后续我们还会一一讲解。

四、数据类型的作用

为什么需要定义数据类型,使用数据类型有哪些好处呢?具体大致有以下作用和优点:

1. 充分利用内存资源

程序是在内存中运行的,数据类型的出现把数据分成了所需内存大小不同的数据,在开发时,需要用到大数据时才申请大内存,可以用占用内存小的数据类型解决时就用小的数据类型,这样就可以充分的利用内存。例如,我们在小时候睡觉睡的是婴儿床,因为身子小足够睡,长大了则睡单人床。

2. 处理速度更高效

使用数据类型声明和初始化的变量只能存储该类型数据,并且在很多的开发语言中对数据类型有着特定的优化,这意味着开发工具在遇到该类型时有着特定的处理方式,可以以更高效的方式处理该类型数据,例如age(年龄)可以声明为数字类型的变量或常量,因为年龄总是由数字组成。

3. 更清晰的代码逻辑

还是举上面这个age的栗子,在age声明为短整形时,意味着age只能赋值数字类型的值,如果我们一时疏忽大意给age赋值了一个字符串(如:张三),这时候开发工具会报错,告诉大家age只能赋值数字类型,这样就相当于有了一个限制,这有助于代码逻辑的清晰,有利于在程序的开发和后期的维护。

4. 不同的功用

不同的数据类型有着其各自特定的作用,例如数字类型可以使用加减乘除等,而字符串,布尔等其他类型是不可以进行运算的因此不能具有该功用,布尔类型是用来判断的,而数字或其他类型是不具有该功用的,因此不具有该功用。

五、总结

数据是放在内存中的,在内存中存取数据要明确三件事情:数据存储在哪里、数据的长度以及数据的处理方式。
变量名不仅仅是为数据起了一个好记的名字,还告诉我们数据存储在哪里,使用数据时,只要提供变量名即可;而数据类型则指明了数据的长度和处理方式。所以诸如int n、char c、float money这样的形式就确定了数据在内存中的所有要素。
C语言提供的多种数据类型让程序更加灵活和高效,同时也增加了学习成本。而有些编程语言,例如Python、PHP、JavaScript等,在定义变量时不需要指明数据类型,编译器会根据赋值情况自动推演出数据类型,更加智能。
除了C语言,Java、C++、C#等在定义变量时也必须指明数据类型,这样的编程语言称为强类型语言。而PHP、JavaScript等在定义变量时不必指明数据类型,编译系统会自动推演,这样的编程语言称为弱类型语言。
强类型语言一旦确定了数据类型,就不能再赋给其他类型的数据,除非对数据类型进行转换。弱类型语言没有这种限制,一个变量,可以先赋给一个整数,然后再赋给一个字符串。
最后需要说明:数据类型只在定义变量时指明,而且必须指明;使用变量时无需再指明,因为此时的数据类型已经确定了。