拡張表記には以下のようなものが存在する。(一部を紹介する)
¥n 改行 (new line) ¥t 水平タブ (horizontal tab) ¥v 垂直タブ (vertical tab) ¥b バックスペース (backspace) ¥a アラート (alert) ¥' シングルクォート ¥" ダブルクォート ¥¥ バックスラッシュ(windowsでは円マーク) ¥? 疑問符
文字定数を記述する場合に1個の文字を「'」(シングルクォート)で囲んでいたが、 文字定数として「'」(シングルクォート)を記述したい場合に 下記のようにしたのでは、文法エラーになる。 (文字定数を「'」(シングルクォート)で囲むため、文字定数のつもりの「'」 (シングルクォート)が文字定数を囲むための「'」(シングルクォート)と解釈 されるためである)
文字定数として「'」(シングルクォート)を記述したい場合は、拡張表記を使っ て'¥''とする。char c = '''; /* 文法エラー */
後で説明する文字列定数でも同様の問題があり、その場合は「"」(ダブルクォー ト)を拡張表記として表現する。char c = '¥''; /* OK */
char string[] = "I said ¥"you are right.¥""; /* "(ダブルクォート)を含む文字列の場合 */
以下のサンプルコードは1文字ずつ表示する プログラムである。
#include <stdio.h> int main(void) { /* putchar()は1文字を表示する関数 */ putchar('A'); /* 'A' */ putchar('¥t'); /* 水平タブ */ putchar('¥''); /* シングルクォート */ putchar('x'); /* 'x' */ putchar('¥''); /* シングルクォート */ putchar('¥t'); /* 水平タブ */ putchar('B'); /* 'B' */ putchar('¥n'); /* 改行 */ return 0; }
実行結果は以下のようになる。 水平タブ(文字の間の空白部分)やシングルクォートが表示されている。
A 'x' B ※ 空白部分は水平タブ