?
This document uses PHP Chinese website manual Release
' 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為:
來自基本源字符集的字符減去單引號('
),反斜線(\
)或換行符。
轉(zhuǎn)義序列:轉(zhuǎn)義序列中定義的特殊字符轉(zhuǎn)義\'
\"
\?
\\
\a
\b
\f
\n
\r
\t
\v
,十六進制轉(zhuǎn)義\x...
或八進制轉(zhuǎn)義\...
之一。
通用字符名稱,\ u ...或\ U ...在轉(zhuǎn)義序列中定義。 | (自C99以來) |
---|
- c-char-sequence is a sequence of two or more c-chars.
1)單字節(jié)整數(shù)字符常量,例如 'a'或'\ n'或'\ 13'。 這樣的常量的類型為int,值等于執(zhí)行字符集中c-char的表示,作為char類型映射到int的值。 如果c-char在執(zhí)行字符集中不能表示為單個字節(jié),則該值是實現(xiàn)定義的。
2)16位寬字符常量,例如 u'貓',但不是u'?'
(u'\U0001f34c'
)。 這種常量的類型為char16_t,值等于mbrtoc16(通常為UTF-16)生成的16位編碼中的c-char的值。 如果c-char不可表示或映射到多個16位字符,則該行為是實現(xiàn)定義的。
3)32位寬的字符常數(shù),例如U'貓'
或U'?'
。這種常量的類型char32_t
和值等于mbrtoc32
(通常為UTF-32)生成的32位編碼中的c-char值。如果c-char不可表示或映射到多個32位字符,則該行為是實現(xiàn)定義的。
4)寬字符常量,例如L'β'
或L'貓
。這樣的常量的類型wchar_t
和值等于執(zhí)行寬字符集中c-char的值(即將生成的值mbtowc
)。如果c-char不可表示或映射到多個寬字符(例如,wchar_t為16位的Windows上的非BMP值),則該行為是實現(xiàn)定義的。
5)多字符常量,例如'AB'
,具有類型int
和實現(xiàn)定義的值。
注意
多字符常量的許多實現(xiàn)使用常量中每個字符的值以big-endian順序(例如'\1\2\3\4'
is 的值)初始化所得整數(shù)的連續(xù)字節(jié)0x01020304
。
在C ++中,普通字符常量具有類型char
,而不是int
。
與整型常量不同,如果char
被簽名,則字符常量可能具有負(fù)值:在這樣的實現(xiàn)上'\xFF'
有一個int
值為-1
。
當(dāng)在#if或#elif的控制表達式中使用時,可以根據(jù)源字符集,執(zhí)行字符集或某些其他實現(xiàn)定義的字符集來解釋字符常量。
例