©
本文档使用
php中文网手册 发布
' c-char ' | (1) |
|---|---|
u ' c-char ' (since C11) | (2) |
U ' c-char ' (since C11) | (3) |
L ' c-char ' | (4) |
' c-char-sequence ' | (5) |
如下:
c-char为:
来自基本源字符集的字符减去单引号('),反斜线(\)或换行符。
转义序列:转义序列中定义的特殊字符转义\' \" \? \\ \a \b \f \n \r \t \v,十六进制转义\x...或八进制转义\...之一。
通用字符名称,\ u ...或\ U ...在转义序列中定义。 | (自C99以来) |
|---|
- c-char-sequence is a sequence of two or more c-chars.
1)单字节整数字符常量,例如 'a'或'\ n'或'\ 13'。 这样的常量的类型为int,值等于执行字符集中c-char的表示,作为char类型映射到int的值。 如果c-char在执行字符集中不能表示为单个字节,则该值是实现定义的。
2)16位宽字符常量,例如 u'貓',但不是u'?' (u'\U0001f34c')。 这种常量的类型为char16_t,值等于mbrtoc16(通常为UTF-16)生成的16位编码中的c-char的值。 如果c-char不可表示或映射到多个16位字符,则该行为是实现定义的。
3)32位宽的字符常数,例如U'貓'或U'?'。这种常量的类型char32_t和值等于mbrtoc32(通常为UTF-32)生成的32位编码中的c-char值。如果c-char不可表示或映射到多个32位字符,则该行为是实现定义的。
4)宽字符常量,例如L'β'或L'貓。这样的常量的类型wchar_t和值等于执行宽字符集中c-char的值(即将生成的值mbtowc)。如果c-char不可表示或映射到多个宽字符(例如,wchar_t为16位的Windows上的非BMP值),则该行为是实现定义的。
5)多字符常量,例如'AB',具有类型int和实现定义的值。
注意
多字符常量的许多实现使用常量中每个字符的值以big-endian顺序(例如'\1\2\3\4'is 的值)初始化所得整数的连续字节0x01020304。
在C ++中,普通字符常量具有类型char,而不是int。
与整型常量不同,如果char被签名,则字符常量可能具有负值:在这样的实现上'\xFF'有一个int值为-1。
当在#if或#elif的控制表达式中使用时,可以根据源字符集,执行字符集或某些其他实现定义的字符集来解释字符常量。
例