https://c-cpp.com/cpp/language/integer_literal
在 C++ 里,字面量(Literal)就是在代码中直接写出来的常量值。它们不用通过变量或函数计算得到,而是直接写死在源代码中的固定值。主要有以下几类:
1. 整数字面量
-
十进制:
42、0 -
八进制:前缀
0,例如075表示十进制 61 -
十六进制:前缀
0x或0X,例如0x2A表示 42 -
二进制(C++14 起支持):前缀
0b或0B,例如0b101010表示 42 -
后缀:指定类型
u/U→ unsignedl/L→ longll/LL→ long long- 例如:
42u(unsigned int),42LL(long long)
2. 浮点数字面量
-
普通小数:
3.14、0.0 -
科学计数法:
1.23e4(即 1.23 × 10⁴) -
后缀:
f/F→ float 类型,例如3.14fl/L→ long double 类型,例如2.71828L
-
默认类型是
double。
3. 字符字面量
-
单引号包裹,表示一个字符:
'a'、'Z'、'9' -
转义字符:
\n(换行)、\t(制表符)、\\(反斜杠)、\'(单引号) -
宽字符:前缀
L,如L'a' -
UTF-8/16/32 字符(C++11 起):
u'a'→char16_tU'a'→char32_tu8'a'→char(UTF-8 编码)
4. 字符串字面量
-
双引号包裹:
"Hello, world!" -
可以包含转义字符:
"line1\nline2" -
多行字符串(C++11 起):原始字符串字面量
R"(这是一个原始字符串 不需要写转义符 \n 也能换行)"
-
前缀:
L"abc"→wchar_t字符串u"abc"→char16_t字符串U"abc"→char32_t字符串u8"abc"→ UTF-8 编码的char字符串
5. 布尔字面量
true和false- 类型是
bool
6. 指针字面量
nullptr(C++11 起),表示空指针- 旧的
NULL也能用,但推荐用nullptr
7. 用户自定义字面量(C++11 起)
可以自己定义后缀,例如:
long double operator"" _km(long double x) {
return x * 1000.0;
}使用时:
auto d = 3.5_km; // 等价于 3500.0✅ 总结
- 数值字面量:整型、浮点型
- 字符与字符串字面量:包括普通、宽字符、UTF 编码、原始字符串
- 布尔字面量
- 指针字面量
- 用户自定义字面量
这样分类学习时,发现 C++ 的字面量不仅仅是数字和字符串,还有类型前缀、后缀,以及 C++11 引入的扩展。