文字と文字列

文字リテラル

構文 'x'
L'x'
'1' // int 型の 0x31
'A' // int 型の 0x41
'AB' // エラー
'あ' // エラー
'' // エラー
'\n' // 改行文字を表す (int 型の 0x0A)
'\\' // 文字 \ を表す (int 型の 0x5C)
L'あ' // ワイド文字 (unsigned short 型の Shift-JIS 全角文字コード (0x82A0))
L'A' // ワイド文字 (unsigned short 型の Shift-JIS 文字コード (0x0041))

文字 (character) リテラル (文字定数) は int 型と見なされます。ただし、値が char 型に収まるため、文字定数は警告を受けることなく char 型にも代入できます。改行や '\' など、一部の文字は、エスケープ シーケンスを使って表現します。

先頭に 'L' を付けると、wchar_t 型のワイド文字になります。

文字列リテラル

"1" // 31, 00
"123" // 31, 32, 33, 00
"123\n" // 31, 32, 33, 0A, 00
"" // 00 (空文字列)
"12" "3" // 31, 32, 33, 00 (文字列の連結)
L"あか"; // ワイド文字列

文字列 (string) リテラルは、char [ ] 型の配列として扱われます。末尾には自動的に 0 が付加されます。ただし、長さが 1 だけ不足する配列の初期化に使用されたときは、0 は付加されません。

複数の文字列リテラル ("〜" の表記) がスペース、改行、コメントを挟むだけで隣り合っていると、自動的に連結され、1 つの文字列になります。

先頭に 'L' を付けると、wchar_t [ ] 型のワイド文字列になります。
char buf1[4] = "123"; // 31,32,33,00
char buf2[4] = "1234"; // 31,32,33,34
char buf3[4] = "12"; // 31,32,00,00
char buf4[] = "1234"; // 31,32,33,34,00
int a1 = sizeof( buf1 ); // a1 = 4
int a2 = sizeof( buf4 ); // a1 = 5

ワイド文字

ISO/JISANSI では 16 ビット文字コード用に wchar_t という型が用意されています。wchar_t 型は、stddef.h で unsigned short int に定義されています。ワイド文字 (列) リテラルは、通常の文字 (列) の先頭に「L」を付けることで表現します。
wchar_t a = L'赤'; // ワイド文字
wchar_t b = L"あかさたな"; // ワイド文字列

Light C では、ワイド文字リテラルは Shift-JIS コードを表します。全角文字の場合は、上位 8 ビットに漢字コードの第 1 バイトが、下位 8 ビットに漢字コードの第 2 バイトが格納されます。半角文字の場合は、下位 8 ビットにデータが格納され、上位 8 ビットは 0 になります。

printf 系関数の %C および %c 指定子では、通常の ASCII 半角文字だけでなく、上の形式の全角文字も出力できます。
printf( "%C", L'赤' );

printf 系関数で wchar_t の文字列を出力するには、%S 指定子を使用します。
printf( "%S", L"あかさたな" );

参照   多バイト/ワイド文字関数