C++面向对象程序设计
上QQ阅读APP看书,第一时间看更新

2.2.2 常量

所谓常量是指在程序运行的整个过程中其值始终不可改变的量,也就是直接使用符号(文字)表示的值。例如:12,3.5,'A'都是常量。

1.整型常量

整型常量即以文字形式出现的整数,包括正整数、负整数和零。整型常量的表示形式有十进制、八进制和十六进制。

(1)十进制整型常量的一般形式与数学中我们所熟悉的表示形式是一样的:

[±]若干个0~9的数字

即符号加若干个0~9的数字,但数字部分不能以0开头,正数前边的正号可以省略。

(2)八进制整常量的数字部分要以数字0开头,一般形式为:

0若干个0~7的数字

(3)十六进制整常量的数字部分要以0x开头,一般形式为:

0x若干个o~9的数字及A~F的字母(大小写均可)

由于八进制和十六进制形式的整型常量一般用来表示无符号整数;所以前面不应带正负号。

整型常量可以用后缀字母L(或1)表示长整型,后缀字母U(或u)表示无符号型,也可同时后缀L和U(大小写无关)。

例如:-123,0123,0x5af都是合法的常量形式。

2.实型常量

实型常量即以文字形式出现的实数,实数有两种表示形式:一般形式和指数形式。

(1)一般形式:例如,12.5,-12.5等。

(2)指数形式:例如,0.345E+2表示0.345×102,-34.4E-3表示-34.4×10-3。E可以大写或小写;当以指数形式表示一个实数时,整数部分和小数部分可以省略其一,但不能都省略。例如:.123E-1,12.E2,1.E-3都是正确的,但不能写成E-3这种形式。

实型常量默认为double型,如果后缀F(或f)可以使其成为float型,例如:12.3f。

3.字符常量

字符常量是单引号括起来的一个字符,如:'a','D','?','$'等。

另外,还有一些字符是不可显示字符,也无法通过键盘输入,例如响铃、换行、制表符、回车等。这样的字符常量该如何写到程序中呢?C++提供一种称为转义序列的表示方法来表示这些字符,表2-2列出了C++预定义的转义序列。

表2-2 C++预定义的转义序列

无论是不可显示字符还是一般字符,都可以用十六进制或八进制ASCII码来表示,表示形式是:

\nnn 八进制形式

\xnnn 十六进制形式

其中nnn表示3位八进制或十六进制数。例如,'a'的十六进制ASCII码是61,于是,'a'也可以表示为'\x61'。

由于单引号是字符的界限符,所以单引号本身就要用转义序列表示为\'。

字符数据在内存中以ASCII码的形式存储,每个字符占1字节,使用7个二进制位。

4.字符串常量

字符串常量简称字符串,是用一对双引号括起来的字符序列。例如:"abcd","China","This is a string."都是字符串常量。由于双引号是字符串的界限符,所以字符串中间的双引号就要用转义序列来表示。例如:

"Please enter \"Yes\" or \"No\" "

表示的是下列文字:

Please enter "Yes" or "No"

字符串与字符是不同的,它在内存中的存放形式是:按串中字符的排列次序顺序存放,每个字符占1字节,并在末尾添加'\0'作为结尾标记。图2-1是字符数据及其存储形式的举例。从图中可以看出,字符串"a"与字符'a'是不同的。

图2-1 字符数据及其存储形式举例

5.布尔常量

布尔型常量只有两个:false(假)和true(真)。