シングルクォート ' で文字を囲む表現は、文字定数と呼ばれることがあります。
(文字定数と呼んでも実体はその文字のコード番号の整数です)
たとえば、 'A' は 65で、'B' は 66 の番号で、char型データと同じ取り扱いになります。
(ASCIIコード表参照)
文字列定数の中 つまり ' で囲む中において、 先頭の\は、特別な意味を持ちます。
\の直後に、1行または3行で表現する8進数表現が可能です。
例えば、'\0'は、0の値ですが、得に文字列の一部にある0のデータを強調する場合に使います。
この表現はヌルコードやヌル文字と呼ばれます。
なお、'0'のASCIIコードは8進数で「60」なので、'0'と'\060'は同じです。
\xの直後に、1行または2行で表現する16進数表現が可能です。
'0'のASCIIコードは16進数で「30」なので、'0'と'\x30'は同じです。
その他の\で指定するエスケープシーケンスに、改行コードの'\n'、
タブコード'\t'、
' の文字コードを表現する'\''や
\の文字コードを表現する'\\'
などがあります。
以下で、部分的なプログラム例を示します。
fprintf(stdout, "%c\n", '\060'); fprintf(stdout, "%c", '\n'); fprintf(stdout, "%c\n", '\x30'); fprintf(stdout, "%c", '\n'); fprintf(stdout, "%c\n", '0'); fprintf(stdout, "%c", '\n'); |
0 0 0 |
以上をfputc関数で行うと次のようになります
fputc( '\060' , stdout);fputc( '\n' , stdout); fputc( '\n' , stdout); fputc( '\x30' , stdout); fputc(stdout, "%c", '\n'); fputc(stdout, "%c\n", '0'); fputc(stdout, "%c", '\n'); |
0 0 0 |
以下にエスケープシーケンスの種類を表としてまとめて示します。
意味 | プログラム表記 | 意味 | プログラム表記 |
---|---|---|---|
警告(ベル)コード | \a | 水平タブ | \t |
バックスペース | \b | 垂直タブ | \v |
改ページ | \f | バックスラッシュ | \\ |
改行 | \n | シングルクォート | \' |
復帰(CR) | \r | ダブルクォート | \" |
なお、処理系によっては、幅広文字定数と呼ばれるものを扱えます。これは、'の前にLを付けて表現します。 例えば、L'x'のような表現で、この場合は<stddef.h>で定義されるwchar型で管理しなければなりません。