![C++编程入门指南(全2册)](https://wfqqreader-1252317822.image.myqcloud.com/cover/112/47379112/b_47379112.jpg)
2.3 变量
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_39_3.jpg?sign=1739529530-b1wMo0xA4Iz9zZk7s5W4x5xuxCK0GfD8-0-1d81ced6f0e77299501f17b92c898097)
变量是指在程序运行过程中其值是可以进行变化的量。每一个变量都是一种类型,每一种类型都定义了变量的格式和行为。数据各式各样,要先根据数据的需求(类型)为它申请一块合适的空间。如果把内存比喻成一个能容纳房客的宾馆,那么房间号就相当于变量名,房间类型就相当于变量的类型,入住的客人就相当于变量值,示意图如图2.14所示。
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_39_4.jpg?sign=1739529530-GB1xzfxu6utfbrjmMAKJ5hs4mSoAAjCM-0-6f81469f4e1e6f74b6dfd0c50ecf6b36)
图2.14 入住宾馆示意图
C++语言中的变量类型有整型变量、浮点型变量(实型变量)和字符型变量,下面分别进行介绍。
2.3.1 标识符
标识符(identifier)可以简单地理解为一个名字,它是用来对C++程序中的常量、变量、语句标号及用户自定义函数的名称进行标识的符号。
● 标识符命名规则如下。
➢ 由字母、数字及下划线组成,且不能以数字开头。
➢ 大写和小写字母代表不同意义。
➢ 不能与关键字同名。
➢ 尽量“见名知义”,应该受一定规范的约束。
● 不合法的标识符如下。
➢ 6A(不能以数字开头)。
➢ ABC*(不能使用*)。
➢ case(是保留关键字)。
在C++语言中有许多保留关键字,如表2.4所示。
表2.4 C++语言中的保留关键字
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_40_1.jpg?sign=1739529530-0aLkE0M7IwqfRUhs7xOsDIeHIImokEQD-0-3ebda5b1972be517630339b675bc84ad)
常见错误:标识符大小写书写错误,在书写标识符时要注意区分字母的大小写;标点符号中英文状态忘记切换,在书写代码时应该采用英文半角输入法输入。
2.3.2 变量的声明与赋值
每个变量都有一个变量名标识符,每个变量同时又具有一个特定的数据类型。
1.变量的声明
在使用变量之前一定要定义或声明,变量声明的语法格式如下:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_40_3.jpg?sign=1739529530-iL5pkr8nEzFRJaM7ucCIVOz9HYLUOEFK-0-1fbe0cf10e739b5db9d6650bbfa1b72b)
类型是变量类型的说明符,说明变量的数据类型。修饰符是任选的,可以没有修饰符。
多个同一类型的变量可以在一行中声明,不同变量名之间使用逗号进行隔开,例如:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_40_4.jpg?sign=1739529530-WhnI7xAdxSN1p5bnMy1msiHZK0EulaNo-0-4c4f75e66f193c57a46e7603c0696bd7)
与
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_40_5.jpg?sign=1739529530-2dKpA1kc7p4T6RQAm5qkjSN4Lrjb0pxC-0-06877892074d3ab7311d5331a53f048a)
两者是等价的。
2.变量的赋值
变量值是可以动态改变的,每次改变都需要进行赋值运算。变量的赋值语法格式如下:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_40_6.jpg?sign=1739529530-wshxzsOik6is0T4FJnnNn1GYwMnU8OdI-0-04937eee96687da5e6fa73819eb4a33d)
变量名标识符就是在声明变量时定义的,例如:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_40_7.jpg?sign=1739529530-kRFrYyK8F6WOKMdggt6DiUIhv2ZH30D9-0-b710a8375324726a49d60dd2d4e498f7)
声明i、j是一个整型变量,100是一个常量,为i赋初值100,最后将i的值赋给j,例如:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_40_8.jpg?sign=1739529530-34dbXyoyt5ZXU7142klRApLm4s2JwA8g-0-9ea7922fe9ac4c003b76f9f547e04099)
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_41_1.jpg?sign=1739529530-PZ7sRAEtTltjJPh8nee6HaO2DwWRWi1S-0-d42292d2bdeb6ce8d186690da486badd)
3.变量赋初值
用户可以在声明变量时把数值赋给变量,这个过程称为变量赋初值,赋初值的情况有以下几种。
(1)int x=5;
表示定义x为有符号的基本整型变量,x被赋初值为5。
(2)int x,y,z=6;
表示定义x、y、z为有符号的基本整型变量,z被赋初值为6。
(3)int x=3,y=3,z=3;
表示定义x、y、z为有符号的基本整型变量,x、y、z分别被赋初值为3。
注意:在定义变量并赋初值时可以写成“int x=3,y=3,z=3;”,但不可以写成“int a=b=c=3;”的形式。
2.3.3 整型变量
整型变量可以分为整型、短整型和长整型,其变量类型说明符分别是int、short、long。根据是否有符号,整型变量还可分为以下6种。
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_41_2.jpg?sign=1739529530-voi0lTiSUrvkdzClpUwTRGTvHvS6qmAR-0-d80a8b00bddc4641a67562fdac99d53c)
方括号中的关键字可以省略,如[signed] int可以写成int。
短整型在内存中占用2字节的空间,有符号短整型表示数的范围是-32768~32767,无符号短整型表示数的范围是0~65535。整型占用4字节的空间,有符号整型表示数的范围是-2147483648~2147483647,无符号整型表示数的范围是0~4294967295。长整型与整型占用的字节数相同,表示数的范围也相同。整型变量范围如表2.5所示。
表2.5 整型变量范围
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_41_3.jpg?sign=1739529530-6JXWbSjZjI1nCJKQMwbbZLX2FBh6Ndb1-0-c562c641b55e106c4006cc1bcb5b1f29)
注意:通常说的整型是指有符号基本整型int。
在默认情况下整数类型是int,如果在为long类型赋值时,没有添加L或l标识,则会按照如下方式进行赋值:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_41_4.jpg?sign=1739529530-2G1cPV6FRt7wmOw9y68iAd0HFGDOHfNK-0-f1950b452b742d23f86b294b3813a029)
正确的写法为:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_42_1.jpg?sign=1739529530-7U62ZgDAPWbr1K6XD3kuE71m5ru1MQ4n-0-aa06cfc1acf1a35724740e34420b8f01)
2.3.4 实型变量
实型变量也称为浮点型变量,是指用来存储实型数值的变量,其中实型数值是由整数和小数两部分组成的。在C++语言中,实型变量根据实型的精度可以分为单精度类型、双精度类型和长双精度类型,如表2.6所示。
表2.6 实型变量的分类
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_42_2.jpg?sign=1739529530-qvi7rnnSsPVstOBWWYYJfsjT52dH6itX-0-866f2601ccf2eca703675d52a63c4c8c)
1.单精度类型
单精度类型使用的关键字float,它在内存中占4字节,取值范围是-3.4×10-38~3.4×1038。定义一个单精度类型变量的方法是在变量前使用关键字 float。如要定义一个单精度类型变量fFloatStyle,并为其赋值为3.14的方法如下:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_42_3.jpg?sign=1739529530-LE3uXYXeuWigClELp7YOYIyZ4tnrqT8h-0-67f241f11f5ace5b70f0c8829339312b)
注意:在为单精度类型变量赋值时,需要在数值后面添加 f,表示该数字的类型是单精度类型,否则默认为双精度类型。
2.双精度类型
双精度类型使用的关键字是double,它在内存中占8字节,取值范围是-1.7×10-308~1.7×10308。
定义一个双精度类型变量的方法是在变量前使用关键字 double。如要定义一个双精度类型变量dDoubleStyle,并为其赋值为5.321的方法如下:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_42_4.jpg?sign=1739529530-zHv2bXkFHgUEmVOQ0q6BhtJSLZfDQHk4-0-926f0ced5df5563c5687e7f451df1e48)
2.3.5 字符型变量
字符型变量是指用来存储字符常量的变量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。
字符型变量在内存空间中占1字节,取值范围是-128~127。定义一个字符型变量的方法是在变量前使用关键字char。如要定义一个字符型变量cChar,并为其赋值为'a'的方法如下:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_42_5.jpg?sign=1739529530-TdRX13CIBtsZaoy4od3gtbSUTgvxgQ2B-0-a979e522a73dfc41228d79cba814e044)
注意:字符数据在内存中存储的是字符的ASCII码值,即一个无符号整数,其形式与整数的存储形式一样,因此,在C++语言中,允许字符型数据与整型数据之间进行通用,例如:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_42_6.jpg?sign=1739529530-m2RP3UbtFM9EBOog5K37jEtVxG1GFeQO-0-aac0572f9c9442c3ad0215810f17154e)
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_43_1.jpg?sign=1739529530-5wbD7cNb8RKDE3Tx9LHH6087DiSmVyaB-0-641df91ceb1c56156aa196fc011593a7)
从上面的代码中可以看到,定义两个字符型变量,在为两个字符型变量进行赋值时,一个字符型变量赋值为a,而另一个字符型变量赋值为97,显示结果都是a。
(1)一个字符型数据,既可以用字符形式输出,也可以用整数形式输出。
字符型数据与整型数据之间的运算,代码如下:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_43_2.jpg?sign=1739529530-QNRxndcUUoMTL2mrr3etZmbpltev01hF-0-532d11d854d33818373e65689f996bdc)
程序运行结果如图2.15所示。
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_43_3.jpg?sign=1739529530-mYELfyPeLfGUJLvL9ruDw4ysDQTqpzvj-0-675868679a501104032a9cb20830a47b)
图2.15 字符型数据与整型数据之间的运算
(2)允许对字符型数据进行算术运算,也就是对它们的ASCII码值进行算术运算。
对字符型数据进行算术运算,代码如下:
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_43_4.jpg?sign=1739529530-QixMqfGsqd9E5a50VNgN6gxTbjFxgE2q-0-19d75c1ee1287cc371f6be2f28aaff95)
程序运行结果如图2.16所示。
![](https://epubservercos.yuewen.com/5F7BC7/26764105801618006/epubprivate/OEBPS/Images/38368-1_44_1.jpg?sign=1739529530-2WDwMKB5uTI7BprcHo8OyDOta8j5Ky2D-0-b8bc8cfe00900d068e148ed2409fea81)
图2.16 对字符型数据进行算术运算