Skip to content

1.3 字面量

This content is not available in your language yet.

字面量是源代码中的常量值,它们是程序中直接使用的数据。例如,42、3.14、"Hello, World!" 都是字面量。

这里只简单介绍一下 C++ 中的字面量,更多内容,如用户定义字面量会在后续章节中详细介绍。

整数字面量是用于表示整数的字面量。例如,42、0x42 都是整数字面量。
42表示整数的42,0x42表示十六进制表达的66。

下列是一些常见的数字字面量写法

源文件文本含义
0十进制0
42十进制42
0x314十六进制314
0314八进制314
0b1010二进制1010

整数字面量可能存在后缀,例如u、l、z,用于指定数字字面量的类型。例如,42u、314l 都是整数数字字面量。
注意,整数字面量开头并没有正负号,数字字面量前面的+和-是一个不属于字面量的标点符号。

字符字面量是用单引号'括起来的字符。例如,'a'、'b'、'c' 都是字符字面量。

字符字面量可能存在前缀,例如u8、u、U、L,用于指定字符字面量的类型。例如,u8'a'、u'a'、U'a'、L'a' 都是字符字面量。

在字符字面量中,会出现转义序列,它们是以反斜杠\开头的字符序列。例如,'\n' 表示换行符,'\t' 表示制表符。 具体而言,换行符是一个字符,它的ASCII码是10。用\n表示换行符(两个字符,ASCII码分别是92和110),是为了方便源码的书写和阅读。这种转义序列只作用在源码中,编译后的程序中只存在转义序列对应的字符。

转义序列也可能是八进制数字,或者十六进制数字(注意,这不会是十进制数字)。例如,'\102','\x42' 都表示ASCII码为66的字符B,\x后面的数字是十六进制的数字。

字符串字面量是用双引号"括起来的字符序列。例如,"Hello, World!" 是字符串字面量。字符串字面量是一组字符的序列,它的性质我们在后续章节中会详细介绍。

类似于字符字面量,字符串字面量也可能存在前缀,例如u8、u、U、L,用于指定字符串字面量的类型。例如,u8"Hello, World!"、L"Hello, World!"、U"Hello, World!" 都是字符串字面量。

字符串字面量中也会出现转义序列,例如,"Hello, World!\n" 中,\n表示换行符。字符串字面量中的转义序列和字符字面量中的转义序列是一样的,一个转义序列用来表示表示一个字符。

浮点数字面量是用于表示浮点数的字面量。例如,1.14、.314f 都是浮点数字面量。

源文件文本含义
3.14十进制-3.14
.314十进制0.314
3.14e2科学计数法表示的314
3.14e-2科学计数法表示的0.0314
0xC.12p+3科学计数法表示的96.5625

数字字面量可能存在后缀,例如f、l、f16,用于指定浮点数字面量的类型。例如,1.14f、3.14l 都是浮点数字面量。

指针字面量只有nullptr这一种,由nullptr关键字组成,用来表示空指针。