2.2 常量
常量是指在程序执行过程中值不改变的量。常量有两种表示形式,即字面常量和符号常量。字面常量的类型是根据书写形式来区分的,它们的类型分别为:整型、浮点型、字符型、字符串型,每个字面常量的字面本身就是它的值。符号常量是一个标识符,在程序中必须遵循“先声明,后使用”的原则。
1逻辑常量
逻辑常量主要用在逻辑运算中,此外,由于逻辑值对应着整数1或0,所以它也能够像其他整数一样出现在表达式中,参与各种整数运算。
2字符常量
字符常量简称字符,它以单引号作为起止符号,中间有一个或若干个字符。这是一般意义上的字符常量;除此之外还有一种特殊形式的字符常量,以“\”开头的包括多个字符的字符序列也是符合规定的字符常量。但是,无论字符常量包含一个还是多个字符,每个字符常量只能表示一个字符,当字符常量的一对单引号内多于一个字符时,则将按照一定的规则解释为一个字符。
计算机中常用的ASCII字符也是字符型的数据,因为ASCII码值在0~127之间,正好落在字符型数据的取值范围之内。ASCII字符集中的每一个显示字符(个别字符除外)都可以作为一个字符常量。但是,对于一些特殊的字符,如回车、换行等具有控制功能的字符,或者像单引号、双引号等作为特殊标记使用的字符,就无法直接采用单引号作为起止符号来表示。C+ +中引入了“转义”字符的概念,其含义是:用反斜线“\”引导的下一个字符失去了原来的含义,而转义为具有某种控制功能的字符。另外,还允许用反斜线引导一个具有1至3位的八进制整数或一个以字母x(大、小写均可)作为开始标记的具有1至2位的十六进制整数,对应的字符就是以这个整数作为ASCII码的字符。
3整型常量
整型常量就是整型常数,简称整数,它有十进制、八进制和十六进制3种表示。
(1)十进制整数
十进制整数以正号(+)或负号(-)开头,由首位非0的一串十进制数字组成。若以正号开头则为正数,若以负号开头则为负数,若省略正负号,则默认为正数。
当一个十进制整数大于等于-2 147 483 648(即231),同时小于等于2 147 483 647(即-231-1)时,则被系统看作是整型常量;当在2 147 483 648~4 294 967 295即232-1范围之内时,则被看作是无符号整型常量;当超过上述两个范围时,则无法用C+ +整数类型表示,只有把它用实数(即带小数点的数)表示才能够被有效地存储和处理。
(2)八进制整数
八进制整数以数字0开头,后面接若干个八进制数字(借用十进制数字中的0~7)。八进制整数前面不带正负号,全部默认为正数。
当一个八进制整数大于等于0同时小于等于017777777777时,则称为整型常量,当大于等于020000000000同时小于等于037777777777时,则称为无符号整型数量。不要使用超过上述两个范围的八进制整数,因为没有与此相对应的C+ +整数类型。
(3)十六进制整数
十六进制整数以数字0和字母x(大、小写均可)开头,后面接若干个十六进制数字(借用十进制数字0~9,字母A~F或a~f)。
当一个十六进制整数大于等于0同时小于等于0x7FFFFFFF时,则称为整型常量,当大于等于0x80000000同时小于等于0xFFFFFFFF时,则称为无符号整型常量,与八进制整数类似,超过上述两个范围的十六进制整数也没有与之相对应的C+ +整数类型,所以也不能使用它们。
C+ +中的整型数据除了一般表示方法之外,还允许给它们添加后缀u或l。对于任一种进制的整数,若后缀为字母u(大、小写均可),则规定它为一个无符号整型(unsigned int)数,若后缀为字母l(大、小写均可),则规定它为一个长整型(long int)数。在一个整数的末尾,可以同时使用u和l,并且对排列无要求。
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(大、小写均可),则自动按一个单精度数来存储。
5枚举常量
枚举常量是枚举类型中定义的值,即枚举植。枚举类型属于用户定义类型,用关键字enum表示,因此又称为enum类型。用户通常利用枚举类型定义程序中需要使用的一组相关符号常量。声明枚举类型的语法格式为:
enum<类型名>{<枚举值表>};
其中,enum是关键字,指出要定义的是枚举类型。<类型名>是标识符,即由用户给出的具体枚举类型名。<枚举值表>包含多个枚举值,它们用逗号分隔开,每个枚举值就是一个枚举常量。枚举值有两种定义形式:一是<值名>;二是<值名>=<整型常量>。
关于enum类型有四点说明:
(1)一个enum类型实际上是int类型的一个子集,其每一个枚举值代表一个整数。
(2)n个枚举值全部未赋常量值时,它们自左至右分别与整数0,1…n-1对应。
(3)若第i个枚举值赋常量值为m,则其未赋常量值的后续枚举值分别与整数m+1,m+2…对应,直到下一个赋了值的枚举值或结束。因此,为枚举值所赋的整型常量值应从左至右递增。
(4)枚举类型的声明也可作为成组声明若干整型符号常量的方法。也就是说,把每个要声明的符号常量作为一个枚举值,将各个枚举值合在一起定义成一个枚举类型。
由于枚举类型属于用户定义数据类型,一旦枚举类型被定义后就可以使用它来定义变量。
编辑推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |