本文更新至 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 }。