![零基础学C++(升级版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/660/49639660/b_49639660.jpg)
2.3 变量
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_35_3.jpg?sign=1738846527-DZz1CUAd8IAz3m3RJAeEBdShryc5yfV0-0-054113c55b996ccacf0ab1cb3f94b20d)
视频讲解
视频讲解:资源包\Video\02\2.3变量.mp4
变量就是指在程序运行期间其值可以变化的量。每一个变量都是一种类型,每一种类型都定义了变量的格式和行为。数据各式各样,要先根据数据的需求(即类型)为它申请一个合适的空间。如果将内存比作一个宾馆,那么变量就相当于宾馆里的房间,房间号相当于变量名,房间类型相当于变量类型,入住的客人相当于变量值,示意图如图2.12所示。
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_35_5.jpg?sign=1738846527-VF8vLYnXhzRnsOJNd73h9iE8Wzvv8YZl-0-fd6028d3f2fbbece9e1768292a5940ff)
图2.12 将内存比作一个宾馆的示意图
C++中的变量有整型变量、实型变量和字符变量。接下来分别进行介绍。
2.3.1 标识符
标识符(identifier)可以被简单地理解为一个名字,它是用来对C++程序中的常量、变量、语句标号以及用户自定义函数的名称进行标识的符号。
☑ 标识符命名规则:
➢ 标识符由字母、数字及下画线组成,且不能以数字开头。
➢ 标识符的大写字母和小写字母代表不同的含义。
➢ 标识符不能与关键字同名。
➢ 标识符尽量“见名知意”,应该受一定规范的约束。
☑ 不合法的标识符:
➢ 6A(不能以数字开头)。
➢ ABC*(不能使用*)。
➢ case(它是保留字)。
C++有许多保留关键字,如下所示。
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_36_1.jpg?sign=1738846527-24wksA6j6ElUI6R0CTuIoWUezTD8TIDW-0-cde877393e16e3333bf0b5219933e04f)
常见错误
(1)标识符大小写书写错误,在书写标识符时要注意区分字母大小写。
(2)标点符号中英文状态忘记切换,在书写代码时应该采用英文输入法半角输入。
2.3.2 变量的声明及赋值
变量是指在程序运行时其值可以改变的量。每个变量都由一个变量名标识,每个变量也都具有一种特定的数据类型。
1.变量声明
变量在使用之前一定要定义或声明。变量声明的一般形式如下:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_36_3.jpg?sign=1738846527-QeoC2sYd6XcqhBNpcppSvyIgAy2bdt0h-0-9e9961dec7254190453704ddf73593f8)
“类型”是变量类型的说明符,说明变量的数据类型。“修饰符”是任选的,可以没有。
多个同一类型的变量可以在一行中声明,不同的变量名用逗号运算符隔开。例如:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_36_4.jpg?sign=1738846527-r4kdNQVuWSCzJa44bOxMrif2SuvRsZB0-0-0ec6e748a371f1905b05f92602bdb159)
与
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_36_5.jpg?sign=1738846527-LbnzDRqSWEQESpoTlQyKuPohNy5rGeqR-0-ee9dc743c9c4e51add313d9e3441df91)
两者等价。
2.变量赋值
变量值是可动态改变的,每次改变时都需要进行赋值运算。变量赋值的形式如下:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_37_1.jpg?sign=1738846527-01PZ4BlzWypCP9TtJCHN5ClyX9dYTwle-0-3e172ab09fc06c5b7bd3d4f1871e559c)
“变量名标识符”就是在声明变量时定义的,“表达式”将在后面的章节中讲到。例如:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_37_2.jpg?sign=1738846527-VT5ib7afmb6OVwEFFy6v4rwCEavNE7MH-0-3b6320fe725519a95ee59ebb21c5f847)
下面声明i是一个整型变量,100是一个常量。
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_37_3.jpg?sign=1738846527-uo0Q4X0o9iRQjILdwolI3GQDz71PkRtS-0-96269830c2057e2aafc769f030599691)
3.变量赋初值
在声明变量时就可以把数值赋给变量,这个过程叫作“变量赋初值”。变量赋初值的情况有以下几种:
(1)int x=5;
表示定义x为有符号的基本整型变量,并为其赋初值为5。
(2)int x,y,z=6;
表示定义x、y、z为有符号的基本整型变量,并为z赋初值为6。
(3)int x=3,y=3,z=3;
表示定义x、y、z为有符号的基本整型变量,且均赋初值为3。
注意
在定义变量并赋初值时可以写成int x=3,y=3,z=3;,但不可以写成int a=b=c=3;这种形式。
2.3.3 整型变量
整型变量可以分为短整型变量、整型变量和长整型变量,变量类型的说明符分别是short、int和long。根据是否有符号,整型还可分为以下6种。
☑ 整型:[signed] int
☑ 无符号整型:unsigned [int]
☑ 有符号短整型:[signed] short [int]
☑ 无符号短整型:unsigned short [int]
☑ 有符号长整型:[signed] long [int]
☑ 无符号长整型:unsigned long [int]
方括号表示其中的关键字可以省略,例如,[signed] int可以写成int。
短整型(short)在内存中占用2字节的空间,可以表示数的范围是-32768~32767。如果是无符号短整型(unsigned short),则表示数的范围是0~65535。整型(int)占用4字节的空间,有符号整型表示数的范围是-2147483648~2147483648,无符号整型(unsigned int)表示数的范围是0~4294967295。长整型与整型占用的字节数相同,表示数的范围也相同,具体如表2.3所示。
表2.3 整型变量范围
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_38_1.jpg?sign=1738846527-3H97TC6f9aXqPVpFW7cIPCSJGsiIr3my-0-30b83dd6662c4ec6a713a11ab56d90de)
说明
通常说的整型就是指有符号基本整型int。
常见错误
默认整型是int。如果为long类型变量赋值时没有添加“L”或“l”标识,则会按照如下方式进行赋值:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_38_4.jpg?sign=1738846527-XI79Xrws0q0iMjiSZLdAx6vcBwpgCAUA-0-3d69e386bdcae9de7bd85aa3c84bb1ce)
正确的写法为:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_38_5.jpg?sign=1738846527-cqOLTtkeAS7nHe3g0WTjTXmXZhx8ImgT-0-968496bbc4bcdb732cdf005bcdf36ea9)
2.3.4 实型变量
实型变量也被称为浮点型变量,是指用来存储实型数值的变量,其中实型数值是由整数和小数两部分组成的。在C++语言中,实型变量根据实型的精度还可以分为单精度类型变量、双精度类型变量和长双精度类型变量,如表2.4所示。
表2.4 实型变量的分类
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_38_6.jpg?sign=1738846527-5MbUUxAGnmyazZoZYFRRNH7NB8gtYPm3-0-d4f97d910146e21fcc0d8c65f0c7f29d)
1.单精度类型
单精度类型使用的关键字是float,它在内存中占4字节,取值范围是-3.4×10-38~3.4×1038。定义一个单精度类型变量的方法是在变量前面使用关键字float。例如,定义一个变量fFloatStyle并赋值为3.14的方法如下:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_38_7.jpg?sign=1738846527-VCUL7PVwJIfdYLlBhwFNUScnVjn1BtBh-0-432190a5108037ec47856ce382a610e1)
注意
在为单精度类型变量赋值时,需要在数值后面加上“f”,表示该数值的类型是单精度类型,否则默认为双精度类型。
2.双精度类型
双精度类型使用的关键字是double,它在内存中占8字节,取值范围是-1.7×10-308~1.7×10308。
定义一个双精度类型变量的方法是在变量前面使用关键字double。例如,定义一个变量dDoubleStyle并赋值为5.321的方法如下:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_39_2.jpg?sign=1738846527-WiKUcxXuoOBvBWW1baRPDGmynSd3nX3p-0-a3afa9dfecbf7e87c402dc3fd0220d4d)
2.3.5 字符变量
字符变量是指用来存储字符常量的变量。将一个字符常量存储到字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。
字符变量在内存中占1字节,取值范围是-128~127。定义一个字符变量的方法是使用关键字char。例如,定义一个字符变量cChar并赋值为'a'的方法如下:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_39_3.jpg?sign=1738846527-i1II7EciYzENndTttokLwlOwpDvyLxPK-0-f0e5ac7f2b2e6e9fb6f5b87522025d18)
说明
字符数据在内存中存储的是字符的ASCII码值,即一个无符号整数,其形式与整数的存储形式一样,因此在C++语言中字符数据与整型数据通用。例如:
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_39_5.jpg?sign=1738846527-wEkWsuCdTndFVVnVWegkT3kQ3n8upbSv-0-06980dd542b4181e9690b48b9efaa5d0)
在上面的代码中,首先定义了两个字符变量,在为这两个变量进行赋值时,其中一个变量被赋值为'a',另一个变量被赋值为97。最后显示的结果都是字符a。
一个字符数据,既可以字符形式输出,也可以整数形式输出。
实例01 字符数据与整型数据之间的运算
实例位置:资源包\Code\SL\02\01
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_39_6.jpg?sign=1738846527-xJwpeBbdGCKNEijPz7uWrSWKjGNtjo0y-0-def5d040773e9585d19cb0fcdcd83c30)
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_40_1.jpg?sign=1738846527-kbtZvO8y31r2jUouCgj0FHyrQwQ4pb2U-0-3059c67a7cebc6d42dd2d80bd1176e4d)
程序运行结果如图2.13所示。
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_40_2.jpg?sign=1738846527-2aLABNYoJ4Xj9ZGQ5qv1oPb0YnS5Rx1K-0-73d58eff3fbf73058c774fc620b131b0)
图2.13 字符数据与整型数据之间的运算
拓展训练
(1)试着输出字符“A”和“a”的ASCII码值。(资源包\Code\Try\001)
(2)程序中不出现字符“B”,试着输出字符“B”。(资源包\Code\Try\002)
C++语言允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。
实例02 对字符数据进行算术运算
实例位置:资源包\Code\SL\02\02
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_40_4.jpg?sign=1738846527-FNWD0akiJ9EgJuHIw29OkceVaqeQ6THK-0-c775e36846dd0f06ea36fccd8b8edc55)
程序运行结果如图2.14所示。
![](https://epubservercos.yuewen.com/D77079/29142624407383406/epubprivate/OEBPS/Images/42276_40_5.jpg?sign=1738846527-6fy3VdBb6ZCosAZdib9dbtnaTG6wfwVG-0-1aae9196858102a1755d80c6e1a98ef5)
图2.14 对字符数据进行算术运算
拓展训练
(1)分别以整数形式(%d)和字符形式(%c)输出“'A'+10”的结果。(资源包\Code\Try\003)
(2)以字符形式(%c)输出“'A'+32”的结果,观察结果,猜测“'B'+32”的结果。(资源包\Code\Try\004)