1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;

int main() {
char c1 = 'a';
char16_t c2 = u'好';
char32_t c3 = U'💩';
wchar_t c4 = L'你';
cout << sizeof c1 << endl;
cout << sizeof c2 << endl;
cout << sizeof c3 << endl;
cout << sizeof c4 << endl;
cout << c1 << endl;
cout << c2 << endl;
cout << c3 << endl;
cout << c4 << endl;
const char str[] = u8"你好";
const char str2[] = "你好";
cout << str << endl;
cout << str2 << endl;
float a = 1e-3F;
unsigned long long b = 42ULL;
long double c = 3.1415926L;

cout << a << endl;
cout << b << endl;
cout << c << endl;

return 0;
}
  1. 'a' 不加修饰符,用单引号包起来的一个字符字面量的类型是 char,占一个字节
  2. u'你' 用小写字母 u 作为前缀,后面跟一个用单引号包起来的字符字面量类型是 char16_t,占两个字节
  3. U'💩' 用大写字母 U 作为前缀,后面跟一个用单引号包起来的字符字面量类型是 char32_t,占四个字节

错误示例:

  1. '你' 汉字字符「你」占两个字节,不能用 char 类型表示
  2. '💩'u'💩' emoji 字符「💩」占四个字节,不能用 char 类型或 char16_t 表示,只能用 char32_twchar_t 表示