2.2 常量及符号
在程序运行过程中,其值不能改变的量称为常量。常量可分为整型常量、实型常量、字符常量、字符串常量和其他常量。
上面代码通过cout向屏幕输出4行内容。cout是输出流,实现向屏幕输出不同类型的数据。代码中2009是整型常量,2.14是浮点常量(实型常量),'a'是字符常量,"Hello World"是字符串常量。
2.2.1 整型常量
整型常量可以分为有符号整型常量和无符号整型常量。
-225代表一个负整数,+1024代表一个正整数,正整数前面的“+”符号可以省略,即+1024和1024表示的意义相同。
基本的数据类型除了整型外,还有长整型和短整型,因此整型常量也有长整型常量和短整型常量之分。长整型常量不可以无限大,它的最大值是有限定的。根据CPU寄存器位数以及编译器的不同,最大的整型常量值也会不同。
注意
4294967295是32位CPU寄存器以及Visual C++ 6.0编译器所允许的最大正整数。
整型常量在编写代码时不仅可以写成十进制整数形式,也可以写成十六进制或八进制整数形式。
(1)八进制整型常量必须以0开头,即以0作为八进制数的前缀,每位取值范围是0~7。八进制数通常是无符号数。
例如,016、0101、0127是合法的八进制整数;256、0396不是合法的八进制整数。因为,256无前缀0,代表十进制整型常量;0396中数字9不是八进制应有的取值。
(2)十六进制整型常量的前缀为0X或0x,其数码取值范围为0~9,以及A~F或a~f。
例如,0X2A1、0XC5、0XFFFF是合法的十六进制整数;5A、0X3N不是合法的十六进制整数。因为5A无前缀0X,0X3N中含有非十六进制数N。
注意
合法主要指能通过编译器编译,非法或不合法指不能通过编译器编译。
2.2.2 实型常量
实型常量也称为浮点数,只能采用十进制形式表示。它有两种表示形式,即小数表示法和指数表示法。
1.小数表示法
小数表示法由整数部分和小数部分组成,两部分每位取值范围都是0~9,中间用小数点分隔。例如,0.0、2.25、0.00596、5.0、536.、-5.3、-0.002等均为合法的实型常量。
整数部分和小数部分有时可以不必同时出现,例如.2和2.。
2.指数表示法
指数表示法也称为科学记数法,指数部分以符号“e”或“E”开始,但必须是整数,并且符号“e”或“E”两边都必须有一个数。例如,1.2e20和-2.4e-2。其中,1.2e20表示的数为1.2×1020。
E5、3E2.5不是合法的实型常量,E5是E之前无数字,3E2.5是E后面有小数。
说明
在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字,称为规范化的指数形式。
L代表长整型。L可以是大写也可以是小写,在编写代码时可以不写。此类符号还有U和u代表无符号。例如,255U或255u都代表无符号整型常量255。
符号L或l与符号U或u可以一起使用。例如,65536lu代表无符号长整型常量65536。
C++编译系统把这种带有L或U形式表示的浮点数按双精度常量处理,在内存中占8个字节。如果在实数的数字之后加字母F或f,表示此数为单精度浮点数。如果加字母L或l,表示此数为长双精度数(long double)。
2.2.3 字符常量
字符常量是用单引号括起来的一个字符,例如,'a'和'?'都是合法字符常量。在对代码编译时,编译器会根据ASCII码表将字符常量转换成整型常量。字符'a'的ASCII码值是97,字符'A'的ASCII码值是65,字符'?'的ASCII码值是63。ASCII码表中还有很多通过键盘无法输入的字符。可以使用'\ddd'或'\xhh'来引用所有ASCII码表中的字符。\ddd是1~3位八进制数所代表的字符,\xhh是1~2位十六进制数所代表的字符。例如,'\101'表示ASCII码A,\xOA表示换行等。
转义字符的应用示例如下:
示例运行结果如图2.2所示。
图2.2 示例运行结果
转义字符是特殊的字符常量,使用时以字符“\”代表开始转义,后面不同的字符表示转义后的字符。转义字符说明如表2.1所示。
表2.1 转义字符说明
2.2.4 字符串常量
字符串常量是由一对双引号括起来的零个或多个字符序列,例如"welcome to our school" "hello girl"。" "表示一个空字符串。
同样,' '也表示空字符,而NULL是一种特殊的数据类型,表示空的意思。有的编译器把它编译成零,有的则编译成其他值。
字符串常量实际上是一个字符数组,可以将字符串分解成若干个字符,字符的数量是字符串的长度。字符串常量一般都是用来给字符数组变量赋值或是直接作为实参传递,为告知编译器字符串已经结束,一般在给字符数组赋初值时在字符串的末尾加上字符'\0',表示字符结束,如果不加字符结束标志,可能会出现意想不到的错误。
字符常量'A'与字符串常量"A"是不同的,字符串常量"A"是由'A'和'\0'两个字符组成的,字符串的长度是2;字符常量'A'只是一个字符,没有长度。
2.2.5 其他常量
前面讲到的都是普通的常量,常量还包括布尔(bool)常量、枚举常量和宏定义常量等。
布尔常量:只有两个,一个是true,表示真;一个是false,表示假。
枚举常量:枚举型数据中定义的数据也都是常量。
宏定义常量:通过#define宏定义的一些值也是常量,例如:
#define PI 3.1415
其中PI就是常量。