3.2 基本变量类型
前面讲了变量的基本定义以及如何操作。本节将介绍C++中常用的几个基本的变量类型如何使用。
提示
变量是存放在内存中的,程序根据内存地址来访问变量。
3.2.1 整数类型
在现实生活中,整数是大家常用的描述方式,在C++中则用整型来描述整数。整型规定了整数的表示形式、运算和表示范围。
在C++中,整型数据类型是用关键字int声明的常量或变量,其值只能为整数。根据unsigned、singed、short和long等修饰符,整型数据类型可分为4种,分别对应无符号整型、有符号整型、短整型和长整型。在C++中,整型变量的声明方式如下:
每种整型变量都有不同的表示方式,表3-1说明了每种整型变量的取值范围。
表3-1 整形变量的取值范围
下面通过一个实例来说明int类型的使用方法。
【实例3-5】int类型的用法(代码3-5.txt)
新建名为“inttest”的【C++ Source File】源程序,源代码如下所示:
【代码详解】
在该例的主程序中,首先定义了一个整型变量a,给该变量赋值100。接下来,输出该变量的值和该变量所占内存空间的大小。下面定义了short int型变量b,对该变量赋值100.01,然后输出该变量的值和该变量占用的内存大小。
运行结果如图3-5所示。
图3-5 代码运行结果图
【实例分析】
从整个示例来看,使用int实现了定义整型变量的操作,使用short int实现了定义短整型变量的操作。整型变量与短整型变量的区别在于它们的取值范围不同。
提示
整型数据在溢出后不会报错,达到最大值后又从最小值开始记。在编程时,注意定义变量的最大取值范围,一定不要超过这个取值范围。
3.2.2 字符类型
在C++中,字符型数据类型只占据1字节,其声明关键字为char。同样,可以给其加上unsigned、singed修饰符,分别表示无符号字符型和有符号字符型。在C++中,字符型变量的声明方式如下:
在ASCII中,共有127个字符。其中1~31和127为不可见字符,其余全部为可见字符。
提示
字符是为针对处理ASCII码字符而设的,字符在表示方式和处理方式上与整数吻合,在表示范围上是整数的子集,其运算可以参与到整数中去,只要不超过整数的取值范围。
计算机不能直接存储字符,所以所有字符都是用数字编码来表示和处理的。例如,a的ASCII码值是97,A的ASCII码值是65,等等。如果一个字符被当作整数使用,其值就是对应的ASCII码值;如果一个整数被当作字符使用,该字符就是这个整数在ASCII码表中对应的字符。
通常在C++中,单个字符使用单引号表示。
例如,字符a可以写为'a'。
单引号只能表示一个字符,如果字符的个数大于1,就变成了字符串,只能使用双引号来表示了。
在C++中,还有一些比较特殊的字符,这些字符是以转义符("\")开头的,称为转义字符。表3-2列出了转义字符。
表3-2 转义字符
下面通过一个实例来说明字符的使用方法。
【实例3-6】字符类型(代码3-6.txt)
新建名为“chartest”的【C++ Source File】源程序,源代码如下所示:
【代码详解】
在本例中,首先定义了一个char型变量cch,其后给cch赋值为'A',将字符变量cch输出。再定义一个int型变量ich,给它赋值也是'A',然后将该变量输出。运行结果如图3-6所示。
图3-6 代码运行结果图
【实例分析】
从结果来看,定义了字符型数据cch和整型数据ich,给它们赋值都为字符'A',输出后其结果不同,整型变量ich的输出为65。这是因为字符型数据在计算机内部是转换为整型数据来操作的,如上述代码中的字母A,系统会自动将其转换为对应的ASCII码值65。
3.2.3 浮点数类型
浮点数类型表示的是带有小数点的数据。在C++中,浮点数类型分为以下3种。
提示
浮点数内部表示特殊,操作不同于整数,能够表示的大小范围比同样大小的整数空间大很多,在两个连续的整数之间能够表示很多精细的数值。
(1)单精度浮点型(float):专指占用32位存储空间的单精度值。当用户需要小数部分并且对精度的要求不高时,单精度浮点型的变量是有用的。下面是一个声明单精度浮点型变量的例子。
(2)双精度浮点型(double):占用64位的存储空间。当用户需要保持多次反复迭代的计算的精确性时,或在操作值很大的数据时,双精度型是最好的选择。例如,前面计算圆周长,声明的常量和变量均为双精度型,代码如下:
(3)扩展精度浮点型(long double):占用80、96或者128位存储空间。
“精度”是指尾数中的位数。通常float类型提供7位精度,double类型提供15位精度,long double类型提供19位精度,但double类型和long double类型在几个编译器上的精度是相同的。除了精度有所增加之外,double类型和long double类型的取值范围也在扩大。
表3-3说明了浮点数的取值范围。
表3-3 浮点数的取值范围
显然,这些类型都可以表示0,但不能表示0和正负范围中下限之间的值,所以这些下限是非0值中最小的值。
下面通过一个实例来说明浮点数的应用。
【实例3-7】浮点数应用(代码3-7.txt)
新建名为“floattest”的【C++ Source File】源程序,源代码如下所示:
【代码详解】
在该例中,首先定义了一个float类型的变量a,又定义了一个double类型的变量b。给a和b赋值为3.1415926,将a和b先输出,再调用setprecision函数保留9位小数输出b。
运行结果如图3-7所示。
图3-7 代码运行结果
【实例分析】
从运行结果来看,无论定义的变量为单精度数据类型float还是双精度数据类型double,其输出的小数位都相同,这是因为没有设置输出精度,系统默认输出6位小数(包括小数点)。若需要double型变量输出更多的小数位,则应设置精度。
3.2.4 布尔类型
布尔类型在C++中表示真假,用bool表示,其直接常量只有两个:true和false,分别表示逻辑真和逻辑假。同样,如果要把一个整型变量转换成布尔型变量,其对应关系为:若整型值为0,则其布尔型值为假(false);若整型值为1,则其布尔型值为真(true)。
提示
bool型输出形式可以选择,默认为整数1和0,若要输出true和false,则可以使用输出控制符d。
下面通过一个实例来说明布尔类型的使用。
【实例3-8】布尔应用(代码3-8.txt)
新建名为“booltest”的【C++ Source File】源程序,源代码如下所示:
【代码详解】
在该例中,首先定义了一个bool类型的变量bflag,又定义了一个int型的变量iflag。给bflag和iflag都赋值为true,将iflag和bflag输出。
运行结果如图3-8所示。
图3-8 代码运行结果
【实例分析】
从运行结果来看,上述程序定义了布尔型变量bflag和整型变量iflag,给其赋值后输出。可以看到,其输出并不是true,而都是整数值1,这是使用布尔类型数据时需要注意的。