3.4 数据类型简介

在编写程序中,数据类型(data type)定义使用存储空间(内存)的方式。通过定义数据类型,告诉编译器怎样创建一片特定的存储空间,以及怎样操纵这片存储空间。

数据类型可以是内部的或抽象的。内建数据类型是编译器本来能理解的数据类型,直接与编译器关联。C和C++中的内建数据类型几乎是一样的。相反,用户定义的数据类型是我们和别的程序员创建的类型,作为一个类。它们一般被称为抽象数据类型。编译器启动时,知道怎样处理内建数据类型;编译器再通过读包含类声明的头文件(在后面几章我们会了解到这一点)认识怎样处理抽象数据类型。

3.4.1 基本内建类型

标准C的内建类型(由C++继承)规范不说明每一个内建类型必须有多少位。规范只规定内建类型必须能存储的最大值和最小值。如果机器基于二进制,则最大值可以直接转换成容纳这个值所需的最少位数。然而,例如,如果一个机器使用二进制编码的十进制(BCD)来表示数字,在机器中容纳每一种数据类型的最大数值的空间是不同的。系统头文件limits.h和float.h中定义了不同的数据类型可能存储的最大值和最小值(在C++中,一般用#include<climits>和<cfloat>代替)。

C和C++中有4个基本的内建数据类型,这里的描述是基于二进制的机器。char是用于存储字符的,使用最小的8位(一个字节)的存储,尽管它可能占用更大的空间。Int存储整数值,使用最小两个字节的存储空间。float和double类型存储浮点数,一般使用IEEE的浮点格式。float用于单精度浮点数,double用于双精度浮点数。

如前所述,我们可以在某一作用域的任何地方定义变量,可以同时定义和初始化它们。下面是怎样用这四种基本数据类型定义变量的例子:

3.4 数据类型简介 - 图1

程序的第一部分定义了4种基本数据类型的变量,没有对变量初始化。如果不初始化一个变量,标准会认为没有定义它的内容(通常,这意味着它们的内容是垃圾)。程序的第二部分同时定义和初始化变量(如果可能,最好在定义时提供初始值)。注意常量6e-4中指数符号的使用,意思是“6乘以10的负4次幂”。