
2.4 数据类型

C++程序在运行时需要处理数据。不同的数据是以自己本身的一种特定形式存在的(如整型、实型及字符型等),不同的数据类型占用不同的存储空间。C++是数据类型非常丰富的语言,常用的数据类型如图2.17所示。

图2.17 C++语言常用的数据类型
掌握数据类型是学习C++语言的基础,本节将详细介绍这些数据类型。
2.4.1 定义数值类型
在 C++语言中,数值类型主要分为整型和实型(浮点型)两大类,其中,整型按符号划分,可以分为有符号和无符号两类;按长度划分,可以分为普通整型、短整型和长整型3类,如表2.7所示。
表2.7 整型数据

注意:表格中的[]为可选部分,如[signed] long [int]可以简写为long。
实型主要包括单精度型、双精度型和长双精度型,如表2.8所示。
表2.8 实型数据

在C++程序中使用实型数据时需要注意以下几点。
(1)实数的相加。
实型数据的有效数字是有限制的,如float类型的有效数字是6~7位,如果将86041238.78设置为float类型,则显示的数字可能是86041240.00,个位数8被四舍五入,小数位被忽略。如果将86041238.78与5相加,则输出的结果为86041245.00,而不是86041242.78。
(2)实数与零的比较。
在开发 C++程序的过程中,经常会进行两个实数的比较,此时尽量不要使用“==”或“!=”,而应使用“>=”或“<=”,许多用户经常在此犯错,例如:

上述代码并不是高质量的代码,如果C++程序要求的精度非常高,则可能会产生未知的结果。通常在比较实数时需要定义实数的精度。
利用实数精度进行实数比较,代码如下:

程序运行结果如图2.18所示。

图2.18 利用实数精度进行实数比较
2.4.2 字符类型
在C++语言中,字符类型使用“''”来表示,如'A'、'B'和'C'等。定义字符型变量可以使用char关键字,例如:

在计算机中,字符是以ASCII码的形式存储的,因此可以直接将整数赋值给字符型变量,例如:

输出结果为a,因为97对应的ASCII码值为a。
2.4.3 布尔类型
在逻辑判断中,结果只有真和假两个值。C++语言提供了布尔类型(bool)来描述真和假。布尔类型共有两个取值,分别为true和false,其中,true表示真,false表示假。在C++语言中,布尔类型被作为整数类型来对待,false表示0,true表示1。将布尔类型赋值给整型是合法的;反之,将整型赋值给布尔类型也是合法的,例如:
