字面值常量

整形字面值

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

posted @ 2023-01-04 18:22  文工程序  阅读(56)  评论(0编辑  收藏  举报