Light C | ← → 目次 索引 |
構文 | '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"あかさたな" ); |
参照 多バイト/ワイド文字関数
Copyright © Tama Software Ltd, 1999-2012. | ← → 目次 索引 |