C++从入门到精通(第5版)
上QQ阅读APP看书,第一时间看更新

2.3 变量

变量是指在程序运行期间其值可以改变的量,本节将介绍变量的相关知识。

2.3.1 标识符

标识符(identifier)是对C++程序中的常量、变量、语句标号以及用户自定义函数的名称进行标识的符号。标识符命名规则如下:

(1)由字母、数字及下画线组成,且不能以数字开头。

(2)大写和小写字母代表不同意义。

(3)不能与关键字同名。

(4)尽量“见名知义”,应该受一定规范的约束。

以下是不合法的标识符:6A、ABC*(不能使用*)、case(是保留字)。

误区警示

标识符必须用英文,这是一个不完全正确的说法。在Visual C++6.0中,使用中文做标识符会出现错误;但在Visual Studio 2019中使用中文标识符,编译器不会报错。建议最好不用中文写代码,否则会造成不必要的麻烦。另外,书写代码时多写注释,会方便很多。

C++中有许多保留关键字,如表2.2所示。

表2.2 C++保留关键字

说明

这些保留关键字是不需要背诵的,在开发环境中编写C++代码,所有保留关键字都会显示为特殊字体(例如变成蓝色),今后的学习中将会逐渐接触到这些保留关键字的具体使用方法,可以慢慢积累。

2.3.2 变量与变量声明

每个变量都有一个变量名标识,且具有一个特定的数据类型。

变量使用之前一定要定义或声明,变量声明的一般形式如下:

     [修饰符] 类型 变量名标识符;

类型是变量类型说明符,说明变量的数据类型。修饰符是可选的,可以没有。

多个同一类型的变量可以在一行中声明,不同变量名之间用逗号隔开,例如:

     int a,b,c;

上述语句的声明效果与下面的语句等价。

     int a;
     int b;
     int c;

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在内存中占用两个字节的空间,可以表示的数的范围是-32768~32767。如果是无符号短整型unsigned short,表示的数的范围是0~65535。整型int占用4个字节的空间,有符号整型表示的数的范围是-2147483648~2147483648,无符号整型unsigned int表示的数的范围是0~4294967295。长整型与整型占用字节数相同,表示的数的范围也相同,具体如表2.3所示。

表2.3 整型变量表示的数值范围

误区警示

不同的编译器,整型的取值范围是不一样的。在字长为16位的计算机中,整型就为16位;在字长为32位的计算机中,整型就为32位。

2.3.4 实型变量

实型变量又称为浮点型变量,分为单精度(float)、双精度(double)和长双精度(long double)3种。

Visual C++ 6.0中,对float提供6位有效数字,对double提供15位有效数字,并且float和double的数值范围不同。对float分配4个字节,对double和long double分配8个字节。

1.单精度

变量类型说明符为float,该实型数据在内存中占用4个字节,表示的数值范围是-3.4×10-38~3.4×1038。例如:

     float a;
2.双精度

变量类型说明符为double,该实型数据在内存中占用8个字节,表示的数值范围是-1.7e-308~1.7e308。例如:

     double b;
3.长双精度

变量类型说明符为long double,该实型数据在内存中占用10个字节,表示的数值范围是-1.1e-4932~1.1e4932。例如:

     long double c;

2.3.5 变量赋值

变量值是动态改变的,每次改变都需要进行赋值。变量赋值的形式如下:

     变量名标识符 = 表达式

变量名标识符是声明变量时定义的,表达式将在后面的章节中讲解。例如:

上述代码声明i是一个整型变量,然后将常量100赋值给i。

上述代码首先声明了两个变量i,j,然后为变量i赋初值,再将i的值赋给j,最终j的值也是100。

2.3.6 变量赋初值

可以在声明变量时就把数值赋给变量,这个过程叫变量赋初值,其情况有以下几种:

(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 x=y=z=3;”这种形式。

2.3.7 字符变量

字符变量的类型说明符为char,一个字符变量在内存中占用1个字节,例如:

字符变量在内存中存储的是字符的ASCII码,即一个无符号整数,其形式与整型变量的存储形式一样,字符型数据与整型数据之间通用。

(1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。

【实例2.1】 字符型和整型数据之间的秘密。(实例位置:资源包\TM\sl\2\1)

在本实例中,定义字符型变量并赋值,然后用printf输出两种形式:一种是字符型%c形式,另一种是整型%d形式。具体代码如下:

程序运行结果如图2.3所示。

(2)允许对字符数据进行算术运算,即对它们的ASCII码值进行算术运算。

【实例2.2】 字符型数据进行算术运算。(实例位置:资源包\TM\sl\2\2)

本实例中,定义字符型变量并赋值,其中一个字符进行减32计算,另一个字符进行加32计算,最后这两个字符分别进行加10计算,并以%d和%c的格式输出。具体代码如下:

程序运行结果如图2.4所示。

图2.3 字符型与整型数据输出效果

图2.4 字符型数据进行算术运算

误区警示

给char型赋值时不可以使用三个单引号,因为这样编译器无法识别开始和结束位置,例如:

char cChar='A''; /*使用三个单引号为字符型赋值*/

会出现如下所示的错误。

编程训练(答案位置:资源包\TM\sl\2\编程训练\)

【训练1】 字符B的无中生有 程序中不出现字符“B”,试着输出字符“B”。

【训练2】 预测“B+32”的结果 以字符格式%c输出“'A'+32”的结果,观察结果,猜测一下“'B'+32”的结果。