エスケープシーケンス

提供: Appmethod Topics
移動先: 案内検索

文字定数の概要:インデックス への移動

円記号(\)は,エスケープシーケンスを表すために使用され,通常は文字として表示できない文字を表現できます。たとえば,定数 \n は改行文字として使用されます。

円記号の後に 8 進数または 16 進数を記述すると,その値に対応する ASCII シンボルや制御コードなどを表すことになります。たとえば,'\03' は〔Ctrl〕+〔C〕を,'\x3F' は疑問符を表します。1 つのエスケープシーケンス内では,char 型の有効範囲内(Appmethod C++ では 00xff)であれば,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 進数字が続く場合にも起こります。たとえば,89 は 8 進表記では使えない数字なので,定数 \258\258 からなる 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

任意

O = 3 文字までの 8 進数字列

\xH

任意

H = 16 進数字列

\XH

任意

H = 16 進数字列



関連項目