![C++从入门到精通(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/641/47216641/b_47216641.jpg)
2.4 常用数据类型
C++是数据类型非常丰富的语言,常用的基本数据类型如图2.5所示。
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-P38_16832.jpg?sign=1738831910-BHxZ7KiA6mPIUsYIYcdGUsSp9RW8FfyT-0-c6c7986c28139be2f6f1f13e41cd4cb8)
图2.5 C++常用数据类型
掌握C++语言的基本数据类型和运算符是学习C++语言的基础。本节将详细介绍这些基本数据类型。
2.4.1 整数类型
整数类型(简称整型)按符号划分,可以分为有符号和无符号两大类;按长度划分,可以分为普通整型、短整型和长整型3类,如表2.4所示。
表2.4 整数类型
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-T39_16698.jpg?sign=1738831910-Ag7Tefij8VVcU2pP2xfTJEdp88v4ZbvB-0-f586eceb29c56957e39f06db816aac9e)
2.4.2 浮点类型
浮点类型(又称实数类型,简称实型)主要包括单精度型、双精度型和长双精度型,如表2.5所示。
表2.5 实数类型
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-T39_16700.jpg?sign=1738831910-AQRUA51zb23Zr63t8N9oh4RRfJX2vEKE-0-fb1d37a0c88bc901563e4f035a042e53)
在程序中使用浮点型数据时需要注意以下两点:
(1)浮点型数据的相加。浮点型数据的有效数字是有限制的,如单精度float的有效数字是6位或7位,如果将数字86041238.78赋值给float类型,显示的数字可能是86041240.00,个位数8被四舍五入,小数位被忽略。如果将86041238.78与5相加,输出的结果为86041245.00,而不是86041243.78。
(2)浮点型数据与零的比较。在开发程序的过程中,经常会进行两个浮点型数据的比较,此时尽量不要使用“==”或“!=”运算符,而应使用“>=”或“<=”之类的运算符,例如:
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-P39_16701.jpg?sign=1738831910-oovHsCAFV6P9Q4NwHVU8WYH1sUzKgX13-0-9aaf1d0c675899e9f218ff318cd5bfe5)
上述代码并不是高质量的代码,如果程序要求的精度非常高,可能会产生未知的结果。
通常在比较浮点型数据时需要定义实数的精度,并利用实数精度进行浮点型数据比较。例如:
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-P39_16702.jpg?sign=1738831910-IkBr6Ds9H61IOj2tws2fDiVVSeKb2MRo-0-e1e26823fda2bca22699414a9fb9280e)
执行结果如图2.6所示。
注意
数字里可以有下画线,这些下画线不会影响数字的值,仅提供分隔作用,方便阅读。下画线不能写在数字开头或末尾,二进制和十六进制前缀字母旁,以及小数点旁。
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-P40_8088.jpg?sign=1738831910-o7CcfWbTNA9i0LhX7Oj4ZDHjry8QF9Nj-0-23b4154a80e8db2a806df1bc2a490969)
图2.6 执行结果
2.4.3 字符类型
在C++语言中,字符类型数据使用' '来表示,如'A'、'B'、'C'等。定义字符变量可以使用char关键字,例如:
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-P40_16704.jpg?sign=1738831910-4m7wPXkrlDe2jNCxhvWWk68uNpYfn7jA-0-caa8c6fd603c0d64a791b5332fda5714)
在计算机中字符是以ASCII码的形式存储的,因此可以直接将整数赋值给字符变量,例如:
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-P40_16705.jpg?sign=1738831910-fPQ0BXxfkUxJbrejCTtT75HewaWs4dKy-0-bcd0690539ecae6620f62d99ab32b937)
输出结果为a,因为97对应的ASCII码为a。
2.4.4 布尔类型
在逻辑判断中,结果通常只有真和假两个值。C++语言中提供了布尔类型(bool)来描述真和假。bool类型共有两个取值,分别为true和false。顾名思义,true表示真,false表示假。在程序中,bool类型被作为整数类型对待,false表示0,true表示1。将bool类型赋值给整型是合法的,将整型赋值给bool类型也是合法的。例如:
![](https://epubservercos.yuewen.com/77E99B/26581282609167606/epubprivate/OEBPS/Images/Figure-P40_16706.jpg?sign=1738831910-KaTCtBXEqMfls4EpkwqPA3V6m1dTPdZC-0-5daa4d717f9fbdf9032f9ac374a6e7ff)