C++预定义了一组数值数据类型,可以用来表示整数、浮点数和单个字符。此外,还预
定义了用来表示字符串的字符数组。
字符型char 通常用来表示单个字符和小整数,它可以用一个机器字节来表示。
整型int、短整型short、长整型long它们分别代表不同长度的整数值。典型情况
下short 以半个字表示,int 以一个机器字表示,而long 为一个或两个机器字。在
32 位机器中int 和long 通常长度相同。
浮点型float、双精度double和长双精度long double分别表示单精度浮点数、双
精度浮点数和扩展精度的浮点数值。典型情况下float 为一个字,double 是两个字,
long double 为三个或四个字。
char short int 和long 称为整值类型integral type。整值类型可以有符号也可以无
符号。在有符号类型中,最左边的位是符号位,余下的位代表数值在无符号类型中,所有
的位都表示数值。如果符号位被置为1, 数值被解释成负数。如果是0,则为正数。一个8
位有符号的char 可以代表从-128 到127 的数值,而一个无符号的char 则表示0 到255 范围
内的数值。
当一个数值,例如1 出现在程序中时,它被称为文字常量literal constant。称之为
文字,是因为我们只能以它的值的形式指代它;称之为常量,是因为它的值不能被改变。
每个文字都有相应的类型,例如0 是int 型而3.14159 是double 型的文字常量。文字常量
是不可寻址的nonaddressable,尽管它的值也存储在机器内存的某个地方,但是我们没有
办法访问它们的地址。
整数文字常量可以被写成十进制、八进制或者十六进制的形式,这不会改变该整数值的
位序列。例如20 可以写成下面三种形式中的任意一种
20 // 十进制
024 // 八进制
0x14 // 十六进制
在整型文字常量前面加一个0,该值将被解释成一个八进制数,而在前面加一个0x 或0X
则会使一个整型文字常量被解释成十六进制数。第20 章输入/输出流库将讨论八进制
或十六进制形式的输出值。
在缺省情况下整型文字常量被当作是一个int 型的有符号值。我们可以在文字常量后
面加一个 L 或l。字母L 的大写形式或者小写形式将其指定为long 类型。一般情
况下,我们应该避免使用小写字母,因为它很容易被误当作数字1 。类似地,我们可以在整
型文字常量的后面加上u 或U 将其指定为一个无符号数。此外我们还可以指定无
符号long 型的文字常量。例如
128u 1024UL 1L 8Lu
浮点型文字常量可以被写成科学计数法形式或普通的十进制形式。使用科学计数法指
数可写作e 或E,浮点型文字常量在缺省情况下被认为是double 型。单精度文字常量
由值后面的f 或F 来标示。类似地,扩展精度中值后面跟的l 或L 来指示。注
意f F l L 后缀只能用在十进制形式中。例如
3.14159F 0.1f 12.345L 0.0
3e1 1.0E-3 2. 1.0L
单词true 和false 是bool 型的文字常量例如可以这样写
true false
可打印的文字字符常量可以写成用单引号括起来的形式。例如
'a' '2' ',' ' ' (空格)
一部分不可打印的字符:单引号、双引号以及反斜杠可以用如下的转义序列来表示。转义序列以反斜杠开头
newline(换行符) /n
horizontal tab(水平制表键) /t
vertical tab(垂直制表键) /v
backspace(退格键) /b
carriage return (回车键) /r
formfeed (进纸键) /f
alert (beel) (响铃符) /a
backslash (反斜杠键) //
question mark (问号) /?
single quote (单引号) /'
double quote (双引号) /"