2.3 变量
变量是指在程序运行过程中其值是可以进行变化的量。每一个变量都是一种类型,每一种类型都定义了变量的格式和行为。数据各式各样,要先根据数据的需求(类型)为它申请一块合适的空间。如果把内存比喻成一个能容纳房客的宾馆,那么房间号就相当于变量名,房间类型就相当于变量的类型,入住的客人就相当于变量值,示意图如图2.14所示。
图2.14 入住宾馆示意图
C++语言中的变量类型有整型变量、浮点型变量(实型变量)和字符型变量,下面分别进行介绍。
2.3.1 标识符
标识符(identifier)可以简单地理解为一个名字,它是用来对C++程序中的常量、变量、语句标号及用户自定义函数的名称进行标识的符号。
● 标识符命名规则如下。
➢ 由字母、数字及下划线组成,且不能以数字开头。
➢ 大写和小写字母代表不同意义。
➢ 不能与关键字同名。
➢ 尽量“见名知义”,应该受一定规范的约束。
● 不合法的标识符如下。
➢ 6A(不能以数字开头)。
➢ ABC*(不能使用*)。
➢ case(是保留关键字)。
在C++语言中有许多保留关键字,如表2.4所示。
表2.4 C++语言中的保留关键字
常见错误:标识符大小写书写错误,在书写标识符时要注意区分字母的大小写;标点符号中英文状态忘记切换,在书写代码时应该采用英文半角输入法输入。
2.3.2 变量的声明与赋值
每个变量都有一个变量名标识符,每个变量同时又具有一个特定的数据类型。
1.变量的声明
在使用变量之前一定要定义或声明,变量声明的语法格式如下:
类型是变量类型的说明符,说明变量的数据类型。修饰符是任选的,可以没有修饰符。
多个同一类型的变量可以在一行中声明,不同变量名之间使用逗号进行隔开,例如:
与
两者是等价的。
2.变量的赋值
变量值是可以动态改变的,每次改变都需要进行赋值运算。变量的赋值语法格式如下:
变量名标识符就是在声明变量时定义的,例如:
声明i、j是一个整型变量,100是一个常量,为i赋初值100,最后将i的值赋给j,例如:
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种。
方括号中的关键字可以省略,如[signed] int可以写成int。
短整型在内存中占用2字节的空间,有符号短整型表示数的范围是-32768~32767,无符号短整型表示数的范围是0~65535。整型占用4字节的空间,有符号整型表示数的范围是-2147483648~2147483647,无符号整型表示数的范围是0~4294967295。长整型与整型占用的字节数相同,表示数的范围也相同。整型变量范围如表2.5所示。
表2.5 整型变量范围
注意:通常说的整型是指有符号基本整型int。
在默认情况下整数类型是int,如果在为long类型赋值时,没有添加L或l标识,则会按照如下方式进行赋值:
正确的写法为:
2.3.4 实型变量
实型变量也称为浮点型变量,是指用来存储实型数值的变量,其中实型数值是由整数和小数两部分组成的。在C++语言中,实型变量根据实型的精度可以分为单精度类型、双精度类型和长双精度类型,如表2.6所示。
表2.6 实型变量的分类
1.单精度类型
单精度类型使用的关键字float,它在内存中占4字节,取值范围是-3.4×10-38~3.4×1038。定义一个单精度类型变量的方法是在变量前使用关键字 float。如要定义一个单精度类型变量fFloatStyle,并为其赋值为3.14的方法如下:
注意:在为单精度类型变量赋值时,需要在数值后面添加 f,表示该数字的类型是单精度类型,否则默认为双精度类型。
2.双精度类型
双精度类型使用的关键字是double,它在内存中占8字节,取值范围是-1.7×10-308~1.7×10308。
定义一个双精度类型变量的方法是在变量前使用关键字 double。如要定义一个双精度类型变量dDoubleStyle,并为其赋值为5.321的方法如下:
2.3.5 字符型变量
字符型变量是指用来存储字符常量的变量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。
字符型变量在内存空间中占1字节,取值范围是-128~127。定义一个字符型变量的方法是在变量前使用关键字char。如要定义一个字符型变量cChar,并为其赋值为'a'的方法如下:
注意:字符数据在内存中存储的是字符的ASCII码值,即一个无符号整数,其形式与整数的存储形式一样,因此,在C++语言中,允许字符型数据与整型数据之间进行通用,例如:
从上面的代码中可以看到,定义两个字符型变量,在为两个字符型变量进行赋值时,一个字符型变量赋值为a,而另一个字符型变量赋值为97,显示结果都是a。
(1)一个字符型数据,既可以用字符形式输出,也可以用整数形式输出。
字符型数据与整型数据之间的运算,代码如下:
程序运行结果如图2.15所示。
图2.15 字符型数据与整型数据之间的运算
(2)允许对字符型数据进行算术运算,也就是对它们的ASCII码值进行算术运算。
对字符型数据进行算术运算,代码如下:
程序运行结果如图2.16所示。
图2.16 对字符型数据进行算术运算