エスケープ シーケンス

円記号 (\) の後に文字が続く、または数字の組み合わせで構成される文字の組み合わせは、"エスケープ シーケンス" と呼ばれます。改行文字、単一引用符、または文字定数内の特定の他の文字を表すには、エスケープ シーケンスを使用する必要があります。 エスケープ シーケンスは 1 つの文字と見なされるため、文字定数として有効です。

通常、エスケープ シーケンスは、ターミナルとプリンターでは、復帰とタブ移動などの操作を指定するために使用されます。 これらは、印字できない文字と、二重引用符 ( " ) などの通常は特別な意味を持つ文字のリテラル表現を提供するためにも使用されます。 次の表は、ANSI エスケープ シーケンスと、それが何を表すかを示す一覧です。

文字シーケンスがトライグラフとして誤って解釈されるような場合、疑問符の前に円記号 (\?) を置くと、リテラル疑問符を指定できます。 詳細については、「トライグラフ」を参照してください。

エスケープ シーケンス

エスケープ シーケンス 表現
\a ベル (警告)
\b バックスペース
\f フォーム フィード
\n 改行
\r キャリッジ リターン
\t 水平タブ
\v 垂直タブ
\' 単一引用符
\" 二重引用符
\\ 円記号
\? リテラル疑問符
\ooo 8 進表記の ASCII 文字
\xhh 16 進表記の ASCII 文字
\xhhhh このエスケープ シーケンスがワイド文字定数または Unicode 文字列リテラルで使用されている場合は、16 進表記の Unicode 文字。

たとえば、WCHAR f = L'\x4e00' または WCHAR b[] = L"The Chinese character for one is \x4e00" のようにします。

Microsoft 固有の仕様

表に示されていない文字の前に円記号が指定されていると、コンパイラは未定義の文字を文字そのものとして処理します。 たとえば、\cc として扱われます。

Microsoft 固有の仕様はここまで

エスケープ シーケンスは、ディスプレイ デバイスに非グラフィカル制御文字を渡すことができます。 たとえば、ESC 文字 ( \033) は、端末またはプリンターの制御コマンドの最初の文字としてよく使用されます。 一部のエスケープ シーケンスはデバイス固有です。 たとえば、垂直タブとフォーム フィードのエスケープ シーケンス ( \v\f) は、画面出力には影響しませんが、プリンターでは該当する操作が実行されます。

また、円記号 ( \ ) を連結文字としても使用できます。 円記号のすぐ後に改行文字 (Enter キーを押すことに相当します) があると、コンパイラは円記号と改行文字を無視し、前の行の一部として次の行を処理します。 これは、主に、1 行より長いプリプロセッサ定義で便利です。 次に例を示します。

#define assert(exp) \
( (exp) ? (void) 0:_assert( #exp, __FILE__, __LINE__ ) )

関連項目

C 文字定数