(3)十六进制整型常量,用0x或0X为前缀,其后由0到9的数字和A到F(大小写均可)字母组成,没有小数部分,不能带符号。例如:0x7A,0x8ef等。
整型常量中的长整型用L(或l)做后缀表示。例如,32786L。
整型常量中的无符号型用U(或u)做后缀表示。例如,4365U。
整型常量后缀可以是U和L(u或l)的组合,表示unsigned ling 类型的常量。
2、浮点型常量
浮点型常量是由整数部分和小数部分组成的,只有十进制表示。
浮点型常量有两种表示方式:一种是小数表示法,它由整数部分和小数部分组成的。这两部分可省去一部分,但不能都省去。如:5. ,.32 ,0.0,13.54等。另一种方法是科学表是法,他常用来表示很大或很小的数,表示方法是在小数表示法后加e(E)及指数部分。但要注意,e(E)前面必须有数字,指数部分可正可负,但都是整数。例如,3.2E-5,5.8E10,3e6等。
与整型常量一样,可以定义float和double型两种变量。在默认情况下,实型常量都为double型,如果要定义float型变量,则必须在实数后加f(F)。表示long double 则必须在实数后加l(L)。例如:
3.2f //float
3.2e2f //float
12.0e-4 //double
76.4L //long double
实型常数分为单精度(float)、双精度(double)和长双精度(long double)3类。一般float型占4个字节,提供7位有效数字。double型占8个字节,提供15位有效数字。long double型占10个字节,提供19位有效数字。
3、字符常量
字符常量是用单括号括起来的一个字符。
有两种表示方法,一种是用该字符的图形符号,如a ,x,*,1,A。另外还可以用字符的ASCII码表示,即用反斜符(\)开头,后跟字符的ASCII码,这种方法也称为转义序列表示法,具体方法是:
有两种形式:一种是用字符的八进制ASCII码,表示为:
\ddd
这里,ddd是八进制值。另一种使用字符的十六进制ASCII码值,表示为
\xhh
这里hh是两位十六进制值。如:A ,\101 和 x41都表示同一个字符常量。
转义序列表示法还可以用来表示一些特殊字符,用来显示特殊符号或控制输出格式。下面是常用的特殊转义字符。
字符形式
ASCII值
功 能
\a
0x07
响铃
\n
0x0a
换行
\t
0x09
制表符(横向)
0x0b
竖向跳格
\v
0x0b
竖向跳格
\b
0x08
退格
\r
0x0d
回车
\\
0x5c
字符\
\”
0x22
字符”
\’
0x27
字符’
\ddd
可表示任意字符
\xhh
可表示任意字符
注意:特殊转义字符必须是小写字母。
4、字符串常量
字符串常量一对双括号括起来的字符序列。例如:
"How are you?"
"ABCD\n"
"a"
"\tabc\txyz!\
mnp\tefg!"
都是字符串。在最后一个字符串中的反斜线是续行符,它表示下面一行的字符与上面是同一行的。使用续行符可使一行写不下的文本写在下一行中。在使用续行符时系统会忽略续行符本身以及其后的换行符。在字符串中出现反斜线时应该用转义字符\\表示。
字符串中可以出现空格符、转义序列或其他字符,也可以包含C++以外的字符,如汉字等,只要编译器支持汉字系统就行。
关于字符常量与字符串常量的区别。
(1)字符串是用一个一维字符数组来存放的,而字符常量可用一个字符型变量存放。例如:
char ch;
ch=a; 正确
ch="a";错误
(2)字符型常量用单引号括起,而串常量用双引号括起。
(3)一个字符常量被存放在内存中只占一个字节,而串常量要占多个字节。例如: a仅占一个字节,用来存放字符a的ASCII码;而"a"却占两个字节,除了用一个字节存放字符a的ASCII码外,还有一个字节存放字符串常量的结束符\0,这里的\0表示空字符的转义序列。要记住,在C++中,凡是字符串都有一个结束符,该结束符用\0表示。
(4)字符常量与字符串常量的操作功能也不相同。例如,字符常量具有加法和减法运算,而字符串常量不具有这种运算。例如:
p-m+1
这是合法的。
"p"-"m"+1
是非法的。
字符串常量有连接、拷贝等功能,在本书的后面进行讲解。
5、枚举常量
枚举常量是枚举类型的值。这种类型一般不常用,在此仅做简单介绍。
学过高级语言的都知道:除了系统预定义的数据类型之外,其他数据类型都要先定义才能使用。枚举类型也是这样,必须先定义,后使用。枚举类型的定义如下:
enum 〈类型名〉 {枚举类型常量表};
其中,enum是关键字,类型名和枚举类型常量都是标识符。
例如:enum day {sun,mon,tue,wed,thu,fri,sat};
默认情况下每个枚举类型常量都对应一个整型序号,第一个常量的序号为0,其后的值依次加1。另外在枚举类型定义时还可显式给枚举类型常量赋值,但必须是整型。例如:
enum day {sun=7,mon=1,tue,wed,thu,fri,sat};
下面定义三个枚举类型变量。
enum day d1,d2,d3;
这里d1,d2,d3只能赋值sun,mon,tue,wed,thu,fri,sat中之一。例如:
d1=tue;d2=sun;d3=d1;
而不能赋值为整型常量,例如,下面赋值是错误的。
d1=3;d2=7;
如果要把序号3对应的常量赋值给枚举类型变量,必须进行强制类型转换。例如:
d3=(enum day )3;
6、符号常量(常量定义)
在C++中的常量常用符号常量来表示,即用一个与常量相关的标识符来代替常量出现在程序中,这种相关的标识符称为符号常量。例如用pi表示圆周率3.1415926,在程序用用到圆周率时就用pi代替。符号常量定义方法如下:
const 〈类型〉〈符号常量〉=〈表达式〉;
如:const float pi=3.1415926;
注意:常量标识符在程序中只能被引用,而不能被重新赋值。既不能出现在表达式的右边。
2.5 变量
变量是在程序执行中其值是可以变化的量。变量有三个要素:名字、类型和值。
1、变量的名字
变量的名字是一个标识符,在组成的变量名字中大小写是不同的。c++虽然未对变量名的长度进行控制,但它受使用的编译系统的制约。一般情况下,变量名用小写字母。注意定义的变量名不要与关键字、库函数名、类名和对象名相同。
2、变量的类型
变量在使用前必须先定义,指出其数据类型。通过类型定义,变量被分配固定的存储空间,直到程序结束时存储空间被释放。变量的操作受类型控制,如整型变量与浮点型变量的操作是不同的。
3、变量的值
与变量有关的有两个值:一个是变量所表示的数据值,另一个是变量的地址值。例如:
char c;
c=a;
其中,第一个语句是定义一个变量,其名字为c,其类型为字符型。第二个语句是给变量c赋值,使变量所表示的数据值为a,该值便是存放在变量c的内存地址中的值,实际上内存中存放的是字符a的ASCII码值,以整数表示,所以c++中整型数据和字符型数据之间可以相互赋值,但要注意其表示的合理范围。例如:下面赋值操作是正确的。
int a=x;
char ch=41;