C/C++:字面值常量

2015-12-22

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 第五版


标签: C/C++

留言请用 Github Issues

聊天请在 Gitter/fan-farm

授权协议 (CC) BY-NC-SA | 订阅 RSS | 邮箱 hi@fzheng.me