本文更新至 C23。
字符类型
-
signed char
:有符号 8 位字符类型。 -
unsigned char
:无符号 8 位字符类型。通常也用作底层内存结构的 byte 表达。 -
char
:8 位字符类型。与int
类型族的常规不同,char
和signed char
是不同的类型。与signed char
或unsigned char
性质相同。 -
wchar_t
:位宽足以表示任何宽字符的字符类型。通常为 16 位无符号整型。 -
char8_t
:(C23 起)8 位无符号字符类型。表示一个 UTF-8 的编码。 -
char16_t
:(C11 起)16 位无符号字符类型。 -
char32_t
:(C11 起)32 位无符号字符类型。
与 C++ 不同, wchar_t
、char8_t
、char16_t
、char32_t
不是关键字,而通常是 typedef。
字符串类型
字符串字面量可使用以下前缀:
-
L
:通常是 UTF-16 编码,字符类型为wchar_t
。如L"是我"
即(wchar_t[]){ 0x662f, 0x6211, 0 }
。 -
u8
:(C11 起)UTF-8 字符串,字符类型为char
,或 C23 起char8_t
。如u8"是我"
即(char8_t[]){ 0xe6, 0x98, 0xaf, 0xe6, 0x88, 0x91, 0 }
。 -
u
:(C11 起)16 位宽字符串,通常(或 C23 起必然)是 UTF-16 编码,字符类型为char16_t
。如u"是我"
即(char16_t[]){ 0x662f, 0x6211, 0 }
。 -
U
:(C11 起)32 位宽字符串,通常(或 C23 起必然)是 UTF-32 编码,字符类型为char32_t
。如U"是我"
即(char32_t[]){ 0x0000662f, 0x00006211, 0 }
。
网友评论