C + + 字元常數
字元常數屬於一或多個基本原始檔字元集,字元集所撰寫的程式,而以單引號括住 (')。 它們用來表示字元在基本執行字元集,在字集中的電腦上執行程式的位置。
Microsoft 專有的
Microsoft C/C++ 編譯器、 來源和執行字元的 ASCII 這兩個集合。
基本原始檔的字集組成 96 個字元: 空格字元。 控制字元,表示水平頁籤、 垂直頁籤、 換頁及新行。 和下列 91 字元:
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
_{}[]#()<>%:;.?*+-/^&|~!=,\"'
執行基本的字集是由集中基本原始檔的字元,字元,也代表提醒、 退格鍵、 換行,以及 null 的控制字元所組成。
結束 Microsoft 特定
有三種字元常數:
標準字元常數
Multicharacter 的常數
寬字元常數
注意事項 |
---|
請使用 [寬字元常數 multicharacter 的常數的位置,以確保可攜性。 |
字元常數會指定成以單引號括住的一或多個字元。 例如:
char ch = 'x'; // Specify normal character constant.
int mbch = 'ab'; // Specify system-dependent
// multicharacter constant.
wchar_t wcch = L'ab'; // Specify wide-character constant.
請注意, mbch屬於型別int。 如果它被宣告為型別char,就不會保留第二個位元組。 Multicharacter 的常數具有四個有意義的字元。 指定四個以上時,會產生錯誤訊息。
字元常數的一部分的字元可能是來源字元集中,為新行字元斜線以外的任何圖形字元 \,單引號 ' 和雙刪除線 」,或者它們可能會指定使用逸出序列。 有三種類型的逸出序列: 簡單、 八進位和十六進位逸出序列。
簡單逸出序列,可能是下列其中一項:
\' \" \? \\
\a \b \f \n \r \t \v
八進位逸出序列是一系列最多 3 個八進位數字的反斜線。
十六進位逸出序列是反斜線開頭,後面再跟著字元 x,後面接著十六進位數字的序列。
Microsoft C++ 支援標準]、 [multicharacter 和 [寬字元常數。 使用寬字元常數來指定的延伸的執行字元集 (例如,支援國際應用程式) 的成員。 標準字元常數具有型別char,multicharacter 的常數具有型別int,而且寬字元常數具有型別wchar_t。 (型別wchar_t標準的包含檔 STDDEF 所述。H,STDLIB。H 和字串。H. 寬字元的函式,但是,就只能在 STDLIB 中建立原型。H.)
在標準與寬字元常數之間的規格中唯一的差別是寬字元常數前面加上字母會上L。 例如:
char schar = 'x'; // Normal character constant
wchar_t wchar = L'\x8119'; // Wide-character constant
下表是保留或 nongraphic 系統相依或不允許字元常數中的字元。 這些字元應表示使用逸出序列。
保留的 C++ 或 Nongraphic 個字元
字元 |
ASCII 表示 |
ASCII 值 |
逸出序列 |
---|---|---|---|
新行字元 |
NL (LF) |
10 或 0x0a |
\n |
水平 Tab |
HT |
9 |
\t |
垂直 Tab |
VT |
11 或 0x0b |
\v |
退格鍵 |
BS |
8 |
\b |
歸位字元 |
CR |
13 或 0x0d |
\r |
換頁 |
FF |
12 或 0x0c |
\f |
警示 |
BEL |
7 |
\a |
反斜線 |
\ |
92 或 0x5c |
\\ |
問號 |
? |
63 或 0x3f |
\? |
單引號 |
' |
39 或 0x27 |
\' |
雙引號 |
「 |
34 或 0x22 |
\" |
八進位的數字 |
ooo |
— |
\ooo |
十六進位數字 |
hhh |
— |
\xhhh |
Null 字元 |
NUL |
0 |
\0 |
如果反斜線之後的字元不指定合法的逸出序列,則結果為所定義的實作。 Microsoft C++ 中,反斜線之後的字元被解譯為常值,就好像逃脫不存在,因此層級 1 (「 無法辨識的字元逸出序列 」) 會產生警告。
在表單中所指定的八進位逸出序列 \ooo,反斜線和一個、 兩次或三個八進位字元所組成。 十六進位逸出序列,指定在表單 \xhhh,包含字元\x後面接著十六進位數字順序。 不像八進位逸出的常數,逸出序列中的十六進位數字數目沒有限制。
八進位逸出序列會終止的第一個字元不是八進位的數字,或是三個字元時被發現。 例如:
wchar_t och = L'\076a'; // Sequence terminates at a
char ch = '\233'; // Sequence terminates after 3 characters
同樣地,十六進位的逸出序列會終止於不是十六進位的數字的第一個字元。 因為十六進位數字包含字母a到f (與A透過F),請確定逸出序列結束於指定的數字。
因為單一的雙引號標記 (') 所包圍的字元常數,使用逸出序列\'來代表包含單引號。 雙引號 (") 可以用來表示未逸出序列。 反斜線字元 (\) 為行接續字元時放在一行的結尾。 如果您想要出現在字元常數結尾的反斜線字元時,您必須輸入兩個反斜線的資料列 (\\)。 (請參閱的轉譯階段 在 前置處理器參考如需有關行接續符號。)