
2.4 常用数据类型
C++是数据类型非常丰富的语言,常用的基本数据类型如图2.5所示。

图2.5 C++常用数据类型
掌握C++语言的基本数据类型和运算符是学习C++语言的基础。本节将详细介绍这些基本数据类型。
2.4.1 整数类型
整数类型(简称整型)按符号划分,可以分为有符号和无符号两大类;按长度划分,可以分为普通整型、短整型和长整型3类,如表2.4所示。
表2.4 整数类型

2.4.2 浮点类型
浮点类型(又称实数类型,简称实型)主要包括单精度型、双精度型和长双精度型,如表2.5所示。
表2.5 实数类型

在程序中使用浮点型数据时需要注意以下两点:
(1)浮点型数据的相加。浮点型数据的有效数字是有限制的,如单精度float的有效数字是6位或7位,如果将数字86041238.78赋值给float类型,显示的数字可能是86041240.00,个位数8被四舍五入,小数位被忽略。如果将86041238.78与5相加,输出的结果为86041245.00,而不是86041243.78。
(2)浮点型数据与零的比较。在开发程序的过程中,经常会进行两个浮点型数据的比较,此时尽量不要使用“==”或“!=”运算符,而应使用“>=”或“<=”之类的运算符,例如:

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

执行结果如图2.6所示。
注意
数字里可以有下画线,这些下画线不会影响数字的值,仅提供分隔作用,方便阅读。下画线不能写在数字开头或末尾,二进制和十六进制前缀字母旁,以及小数点旁。

图2.6 执行结果
2.4.3 字符类型
在C++语言中,字符类型数据使用' '来表示,如'A'、'B'、'C'等。定义字符变量可以使用char关键字,例如:

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

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