文字定数の表現

シングルクォート ' で文字を囲む表現は、文字定数と呼ばれることがあります。
    (文字定数と呼んでも実体はその文字のコード番号の整数です)
たとえば、 '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型で管理しなければなりません。