Escape sequences
エスケープシーケンスは、 文字列リテラル および 文字定数 内で特定の特殊文字を表現するために使用されます。
以下のエスケープシーケンスが利用可能です。ISO Cでは、バックスラッシュの後にここに記載されていない文字が続く場合、診断メッセージの出力が要求されます:
|
エスケープ
シーケンス |
説明 | 表現 |
|---|---|---|
| 単純エスケープシーケンス | ||
\'
|
シングルクォート |
ASCIIエンコーディングにおけるバイト
0x27
|
\"
|
ダブルクォート |
ASCIIエンコーディングにおけるバイト
0x22
|
\?
|
疑問符 |
ASCIIエンコーディングにおけるバイト
0x3f
|
\\
|
バックスラッシュ |
ASCIIエンコーディングにおけるバイト
0x5c
|
\a
|
可聴ベル |
ASCIIエンコーディングにおけるバイト
0x07
|
\b
|
バックスペース |
ASCIIエンコーディングにおけるバイト
0x08
|
\f
|
フォームフィード - 改ページ |
ASCIIエンコーディングにおけるバイト
0x0c
|
\n
|
ラインフィード - 改行 |
ASCIIエンコーディングにおけるバイト
0x0a
|
\r
|
キャリッジリターン |
ASCIIエンコーディングにおけるバイト
0x0d
|
\t
|
水平タブ |
ASCIIエンコーディングにおけるバイト
0x09
|
\v
|
垂直タブ |
ASCIIエンコーディングにおけるバイト
0x0b
|
| 数値エスケープシーケンス | ||
\
nnn
|
任意の8進数値 |
コードユニット
nnn
|
\x
n...
|
任意の16進数値 |
コードユニット
n...
(任意の桁数の16進数)
|
| ユニバーサル文字名 | ||
\u
nnnn
(C99以降)
|
Unicode
の許容範囲内の値;
複数のコードユニットになる可能性あり |
コードポイント
U+
nnnn
|
\U
nnnnnnnn
(C99以降)
|
Unicode
の許容範囲内の値;
複数のコードユニットになる可能性あり |
コードポイント
U+
nnnnnnnn
|
ユニバーサル文字名の範囲
ユニバーサル文字名が、
|
(C99以降) |
注記
\ 0 は、ヌル終端文字列において終端のヌル文字を表すため、最も一般的に使用される8進数エスケープシーケンスです。
改行文字 \n は、 text mode I/O で使用される場合に特別な意味を持ちます:OS固有の改行バイトまたはバイトシーケンスに変換されます。
8進数エスケープシーケンスは最大3桁の8進数を持ちますが、それより早く有効な8進数ではない文字が現れた時点で終了します。
16進数エスケープシーケンスには長さの制限がなく、有効な16進数桁ではない最初の文字で終了します。単一の16進数エスケープシーケンスで表される値が、この文字列リテラルまたは文字定数で使用される文字型( char , char8_t (C23以降) , char16_t , char32_t (C11以降) または wchar_t )で表される値の範囲に収まらない場合、結果は未定義です。
|
ナロー文字列リテラル内のユニバーサル文字名 または16ビット文字列リテラル (C11以降) は、複数のコードユニットにマッピングされる可能性があります。例えば、 \U0001f34c はUTF-8では4つの char コードユニット( \xF0\x9F\x8D\x8C ) であり、UTF-16では2つの char16_t コードユニット( \xD83C\xDF4C ) (C11以降) です。 |
(C99以降) |
|
ISO/ISC 10646で未定義である
|
(C99以降)
(C23まで) |
|
疑問符エスケープシーケンス \ ? は、文字列リテラル内での トライグラフ の解釈を防ぐために使用されます: "??/" のような文字列は " \" としてコンパイルされますが、2番目の疑問符が "? \? /" のようにエスケープされている場合は、 "??/" となります。 |
(C23まで) |
例
#include <stdio.h> int main(void) { printf("This\nis\na\ntest\n\nShe said, \"How are you?\"\n"); }
出力:
This is a test She said, "How are you?"
参考文献
- C17規格 (ISO/IEC 9899:2018):
-
- 5.2.2 文字表示セマンティクス (p: 18-19)
-
- 6.4.3 ユニバーサル文字名 (p: 44)
-
- 6.4.4.4 文字定数 (p: 48-50)
- C11規格 (ISO/IEC 9899:2011):
-
- 5.2.2 文字表示セマンティクス (p: 24-25)
-
- 6.4.3 ユニバーサル文字名 (p: 61)
-
- 6.4.4.4 文字定数 (p: 67-70)
- C99規格 (ISO/IEC 9899:1999):
-
- 5.2.2 文字表示セマンティクス (p: 19-20)
-
- 6.4.3 ユニバーサル文字名 (p: 53)
-
- 6.4.4.4 文字定数 (p: 59-61)
- C89/C90規格 (ISO/IEC 9899:1990):
-
- 2.2.2 文字表示セマンティクス
-
- 3.1.3.4 文字定数
関連項目
|
C++ ドキュメント
for
エスケープシーケンス
|