エスケープシーケンス
文字定数の概要:インデックス への移動
円記号(\
)は,エスケープシーケンスを表すために使用され,通常は文字として表示できない文字を表現できます。たとえば,定数 \n
は改行文字として使用されます。
円記号の後に 8 進数または 16 進数を記述すると,その値に対応する ASCII シンボルや制御コードなどを表すことになります。たとえば,'\03'
は〔Ctrl〕+〔C〕を,'\x3F'
は疑問符を表します。1 つのエスケープシーケンス内では,char 型の有効範囲内(C++Builder では 0
~0xff
)であれば,8 進数の 3 桁までの文字列,あるいは 16 進数(何桁でもよいが,3 桁以上だと警告が出る)の文字列を使用できます。数字が有効範囲を超えると,「Numeric constant too large(定数の値が大きすぎる)」というエラーが生成されます。たとえば,8 進数 \777
は有効な最大値(\377
)よりも大きいのでエラーになります。8 進または 16 進エスケープシーケンス内の最初の非 8 進数字あるいは非 16 進数字は,シーケンスの終わりを意味します。
次の例を考えてみましょう。
printf("\x0072.1 A Simple Operating System");
この文字列は,"\x007"
と "2.1 A Simple Operating System"
であると解釈されることが意図されています。しかし,コンパイラは,"\x0072"
を 16 進数,".1 A Simple Operating System"
を文字列としてコンパイルします。
この種の問題を防止するには,コードを次のように書き直してください。
printf("\x007" "2.1 A Simple Operating System");
このようなあいまいさは,8 進のエスケープシーケンスの後ろに非 8 進数字が続く場合にも起こります。たとえば,8
と 9
は 8 進表記では使えない数字なので,定数 \258
は \25
と 8
からなる 2 文字の定数であると解釈されることになります。
次の表に,使用できるエスケープシーケンスを示します。
エスケープシーケンス
メモ: オペレーティングシステムのパス名などで,円記号(\)そのものを表すには
\\
を使わなければなりません。
シーケンス |
値 |
文字 |
動作 |
\a |
0x07 |
BEL |
可聴ベル |
\b |
0x08 |
BS |
後退 |
\f |
0x0C |
FF |
フォームフィード |
\n |
0x0A |
LF |
改行 |
\r |
0x0D |
CR |
復帰 |
\t |
0x09 |
HT |
水平タブ |
\v |
0x0B |
VT |
垂直タブ |
\\ |
0x5c |
\ |
円記号 |
\' |
0x27 |
' |
単引用符(アポストロフィ) |
\" |
0x22 |
" |
二重引用符 |
\? |
0x3F |
? |
疑問符 |
\O |
任意 |
| |
\xH |
任意 |
| |
\XH |
任意 |
|