Contents
在某些程序里看到 1.0f 这种写法,以为 f 的存在只是强调浮点型,翻书明白,因为 C++ 默认使用双精度浮点型 double,加后缀 f 是为了改成单精度浮点型 float。这种写法称为字面值常量。
形如 42 的值被称为字面值常量(literal)。每个字面值常量都对应一种数据类型。
整型和浮点型
整型可以写成不同进制,比如 20 可以写成:
20 /*十进制*/
024 /*八进制*/
0x14 /*十六进制*/
浮点型字面值表现为一个小数,也可以用科学计数法:
3.14
3.14E0
0.
0e0
.001
字符和字符串字面值
单引号括起来的一个字符称为 char 型字面值,双引号括起来的零个或若干个字符构成字符串字面值。
'a'
"hello wolrd!"
字符串字面值实际上是字符常量构成的数组。
转义序列
使用不可打印(如换行、退格)或者 C++ 中有特殊含义的字符(如引号),需要用到转义序列。比如:
\n // 换行符
\t // 制表符
\" // 双引号
\? // 问号
指定字面值的类型
通过使用前缀和后缀,可以改变整型、浮点型和字符型字面值的默认类型。
L'a' // 宽字符型字面值,wchar_t
u8"hi" // utf-8 字符串字面值
42ULL // 无符号整型字面值,unsigned long long
1E-3F // 单精度浮点型字面值,float
3.14159L // 扩展精度浮点型字面值,long double
参考: C++ Primer 第五版