4.实型常量实型常量有十进制的定点和浮点两种表示方法,但并不存在其他进制的表示,下面分别介绍这两种表示方法。(1)定点表示定点表示的实数简称定点数,实际上是以小数形式表示实数。定点表示的实数是由一个正号或负号(正号可以省略)后接若干个十进制数字和一个小数点所组成,这个小数点可以处在任何一个数字位的前面或后面。(2)浮点表示浮点表示的实数简称浮点数,实际上是以指数形式表示实数。浮点表示的实数是由一个十进制整数或定点数后接一个字母E(大、小写均可)和一个1至3位的十进制整数所组成,字母E之前的部分称为该浮点数的尾数,之后的部分成为该浮点数的指数,该浮点数的值就是它的尾数乘以10的指数幂。对于一个浮点数,若将它尾数中的小数点调整到最左边第一个非零数字的后面,则称它为规格化(或标准化)浮点数。实型常量分为单精度(float)、双精度(double)和长双精度(long double)三类。一般float型数据在内存中占4个字节,提供7位有效数字;double型数据占8个字节,提供15位有效数字;long double型数据占10个字节,提供19位有效数字。对于一个定点数或浮点数,C+ +自动按一个双精度数(double型)来存储。若在一个定点数或浮点数之后加上字母F(大、小写均可),则自动按一个单精度数来存储。
& u2 U% ?- }6 k* _6 ^9 z! l 5.枚举常量枚举常量是枚举类型中定义的值,即枚举植。枚举类型属于用户定义类型,用关键字enum表示,因此又称为enum类型。用户通常利用枚举类型定义程序中需要使用的一组相关符号常量。声明枚举类型的语法格式为:enum<类型名>{<枚举值表>};! w2 `9 `& j) T" g- ~
其中,enum是关键字,指出要定义的是枚举类型。<类型名>是标识符,即由用户给出的具体枚举类型名。<枚举值表>包含多个枚举值,它们用逗号分隔开,每个枚举值就是一个枚举常量。枚举值有两种定义形式:一是<值名>;二是<值名>=<整型常量>。" J6 C3 z1 H, q, o, F" [6 l
关于enum类型有四点说明:(1)一个enum类型实际上是int类型的一个子集,其每一个枚举值代表一个整数。(2)n个枚举值全部未赋常量值时,它们自左至右分别与整数0,1…n-1对应。(3)若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1,m+2…对应,直到下一个赋了值的枚举值或结束。因此,为枚举值所赋的整型常量值应从左至右递增。(4)枚举类型的声明也可作为成组声明若干整型符号常量的方法。也就是说,把每个要声明的符号常量作为一个枚举值,将各个枚举值合在一起定义成一个枚举类型。由于枚举类型属于用户定义数据类型,一旦枚举类型被定义后就可以使用它来定义变量。 【考点三】 变量8 f' j8 M6 M, K) n
1.变量的定义变量的定义是通过变量声明语句来实现的,变量声明语句的一般格式为:[<存储类>]<类型名><变量名>[=<初值表达式>],...;<存储类>有四种,它们分别是auto、register、static、extern。<类型名>为已存在的一种数据类型名称,如char,short,int,long,float,double等基本数据类型名,或者用户定义的数据类型名。<变量名>是用户定义的一个标识符,用来表示一个变量,该变量可以通过后面的可选项赋予一个值,称为给变量赋初值,也叫做对变量进行初始化。C+ +中标识符是区分大小写的,也就是说,大写字母和小写字母被认为是不同的字母。变量名的命名遵循如下规则:(1) 不能是C+ +关键字;(2)第一个字符必须是字母或下划线;(3)中间不能有空格;(4)变量名中不能包括;,′″+-之类的特殊符号。实际上变量名中除了能使用26个英文大小写字母和数字外,只能使用下划线"_"。3 g# @/ X+ Y. z9 S
2.变量的使用方式(1)全局变量和局部变量全局变量是在所有函数定义、类定义和程序块之外声明的变量。声明全局变量时如果在程序中不对它进行专门的初始化,该变量会被系统自动初始化为0。在程序的任何一个函数、类或程序块之内均可以访问全局变量。局部变量是在某个函数定义、类定义或程序块之内声明的变量。局部变量只能在声明它的函数、类或程序块中被访问。 (2)生存期与作用域生存期是指从一个变量被声明且分配了内存开始,直到该变量声明语句失效,它占用的内存空间被释放为止。一个全局变量的生存期从它被声明开始,直到程序结束;一个局部变量的生存期从它被声明开始,直到包含它的最近的一个程序块结束。作用域是指变量名可以代表该变量存储空间的使用范围。一般情况下,变量的作用域与其生存期一致,但由于C+ +语言允许在程序的不同部分为不同变量取同一名字,因此一个变量名的作用域可能小于其生存期。(3)变量的存储类属性在C+ +中变量还可以按存储分配方式的不同被划分为4种不同的存储类别,它们分别是:①auto变量:用关键字auto声明的局部变量称为自动变量。auto为变量声明时的默认存储类别,即在变量定义时,如果不显式标明存储类别,则系统自动按auto变量处理。auto变量所占用存储空间的分配和释放工作将由系统自动完成。②register变量:用关键字register声明的局部变量称为寄存器变量。register变量可能以寄存器作为其存储空间。声明寄存器变量时,关键字register的作用只能是建议(而不是强制)系统使用寄存器,原因是寄存器虽然存取速度快,但空间有限,当寄存器不够用时,该变量仍然按自动变量处理。③static变量:用关键字static声明的变量称为静态变量。任何静态变量的生存期将延续到整个程序的终止。与全局变量一样,为静态变量分配的存储空间在整个程序运行过程中不再被释放;如果静态变量未被赋初值,系统将自动为其赋初值为0。④extern变量:用关键字extern声明的变量称为外部变量。变量一旦被声明为外部变量,系统就不必像一般变量那样为其分配内存,因为该变量已在这一局部的外面被定义。外部变量一般用于多个文件组成的程序中,有些变量在多个文件中被声明,但却是指同一变量。标明某一变量为外部变量可以避免为其重复分配内存。(4)typedef类型说明使用关键字typedef可以为已有类型名定义一个新类型名。其语法格式为:typedef<已有类型名><新类型名>typedef类型说明并没有真正地定义新的数据类型,它只是相当于给某个已有的数据类型起了一个别名。在规模较大的程序中为了提高代码可读性常采用这种形式。 |