"と " で囲む表現をしている情報は、
文字列定数と呼ばれます。
文字列定数は、 "と "の間に並ぶ文字をメモリー上に並べて、
その並べた先頭文字の存在する位置を表現しているデータです。
(このように位置を表現しているデータはポインタと呼ばれます。)
この文字列定数は、 " で始まり、終わりを " で指定するため、
内部で直接に " の文字を表現することはできません。
" の文字を内部で表現するには、 \ と " の2つの文字を並べて、
1つの " を表現します。
このように文字列定数の中では、 \は、特別な意味を持ちます。
一つの改行コードを表現する場合にも \ の文字と nの文字を並べて一つの特殊文字を表現しました。
このように、 \と、それに続く文字で表現するスタイルをエスケープシーケンスと呼びます。
\のエスケープシーケンスには、\n以外にも\t で表現するタブや、
\0に続く8進数や、
\xに続いた2桁の16進数で文字コードを直接指定する方法などがあります。
また、一つの \を文字列定数内に埋め込む場合も、 \\と2つ並べたエスケープシーケンスの表現を必要とします。
以下に例を示します。
fprintf(stdout, "\\と\"を2つ並べて一つの\"になります。\n"); fprintf(stdout, " 8進数表現\141,\142,\143,\144\n"); fprintf(stdout, "16進数表現\x61,\x62,\x63,\x64\n"); |
\と"を2つ並べて一つの"になります。 8進数表現a,b,c,d 16進数表現a,b,c,d |
a の文字のASCIIコードは16進で 61になっています。