c-lang:文字定数
'文字'。int型。
文字定数は、'a'のように単一引用符「'」で囲まれたひとつ以上の文字の列である。
単一の文字からなる文字定数の値は、実行時のマシンの文字セット中の文字の数値となる。
多くの文字からなる定数の値は、処理系ごとに定義される。
文字定数には「'」文字あるいは改行は含まれない。
それらおよびある種の他の文字を表すには、次のエスケープ列を使う
table:character-constants
改行 (new line) NL (LF) \n
水平タブ (horizontal tab) HT \t
垂直タブ (vertical tab) VT \v
後退 (back space) BS \b
復帰 (carrige return) CR \r
改頁 (form feed) FF \f
ベル (alert) BEL \a
バックスラッシュ( \自身) \ \\
疑問符(三連文字対策) ? \?
単一引用符(文字定数対策) ' \'
二重引用符(文字列定数対策) " \"
8進数 (octal) 000 \000
16進数 (hexdecimal) hh \xhh
エスケープ\OOOは、バックスラッシュの後に 1、2あるいは3個の8進数を並べたもので、望ましい文字の値を表すのに使われる。
この表記の代表例は、\0(後に数字が続かない場合)で、これは文字NULLを表す。
エスケープ\xhhはバックスラッシュの後にx、さらに16進数を続けたもので、これも望ましい文字の値を表すのに使われる。
数字の桁数に制限はないが、結果として生ずる文字の値が、最大の文字の値を超えると、そのふるまいは不定となる。
8進数あるいは、16進数のエスケープ文字のいずれについても、処理系がchar型を符号付きとして扱うものであれば、その値はchar型に型変換されたと同じように符号拡張される。 \ の次の文字が上に示したものでないときには、そのふるまいは不定である。
処理系によっては、char型では表すことのできない拡張文字セットがある。
この拡張文字での定数は、例えばL'x'のようにLを前に付けて書く。
これを幅広文字定数と呼ぶ。
そうした定数は、標準ヘッダ<stddef.h>で定義される整数型 wchar_t を持つ。
これに対しても、普通の文字と同様に、8進あるいは16進のエスケープが使える。
ただし指定された値がwchar_t で表し得る値を超えると、その効果は不定となる。