字面值常量
整形字面值
20
默认十进制
020
以 0 作为前缀,八进制
0x20
以 0x 作为前缀,十六进制
字符串常量
"ABC"
是一个字符串字面值
令auto c = "ABC"
,那么 c 是 const char*
数据类型,sizeof(c)
的结果是 8 ,指针大小为 8
sizeof("ABC")
结果是 4 ,因为字符串字面值常量是带有结尾符号 '\0' 的字符数组
L"ABC"
是一个宽字符字面值
令auto c = L"ABC"
,c 的类型是 const wchar_t*
作为指针的大小还是 8
但是 sizeof(L"ABC")
的结果是 8 ,是普通字符串的两倍
浮点型的常量
10.
默认是 double 类型的浮点型数据
10.f \ 10.F
带有 f \ F 后缀的小数,视作 float 类型的数据
10.l \ 10.L
带有 l \ L 后缀的小数,视作 long double 类型的数据
1E2L
是 long double 类型的数据,其数值为 1*10^2 得 100
指定字面值常量的类型
字符 指定字面值的类型 | ||
---|---|---|
前缀 | 含义 | 类型 |
u | Unicode 16 字符 | char16_t |
U | Unicode 32 字符 | char32_t |
L | 宽字符 | wchar_t |
u8 | UTF-8(仅用于表示字符串常量) | char |
整型 指定字面值的类型 | ||
---|---|---|
后缀 | 含义 | 类型 |
u 或者 U | 无符号类型 | unsigned |
l 或者 L | 长 | long |
ll 或者 LL | 长长 | long long |
浮点型 指定字面值的类型 | ||
---|---|---|
后缀 | 含义 | 类型 |
f 或者 F | 单精度浮点型 | float |
l 或者 L | 长 | long |
ll 或者 LL | 长长 | long long |
布尔类型的常量
true
真
false
假
指针字面值常量
nullptr
空指针
示例
'a'
表示字符常量,类型为char
L'a'
表示宽字符常量,类型为 wchar_t
"a"
表示字符串常量,令 c = "a"
那么 c 的类型是 const char*
L"a"
表示宽字符常量,令c = L"a"
那么 c 的类型是 const wchar_t*
10
表示十进制的整形常量,类型为 int
4294967295
表示长长整形常量,类型为 long long
因为其数值超过了 int 类型的界限
令 int i = 4294967295
那么 i 会变成 -1
10u
表示无符号整形,类型为 unsigned int
10L
表示长整形,类型为 long
10uL
表示无符号长整形,类型为 unsigned long
012
八进制的整形,类型为 int
0xC
十六进制的整形,类型为 int
3.14
双精度浮点值,类型为 double
3.14f
表示单精度浮点型的字面值,类型为 float
3.14L
表示长精度浮点型的字面值,类型为 long double
10.
表示双精度浮点型的字面值,类型为 double