char
型変数 char
型は文字(character)を扱うために用意された型です。
/* Example 4.1 */ #include <stdio.h> int main(void) { char a = 'A'; char b = '\101'; char c = '\x41'; printf("(a) %c (%d, %o, %x)\n", a, a, a, a); printf("(b) %c (%d, %o, %x)\n", b, b, b, b); printf("(c) %c (%d, %o, %x)\n", c, c, c, c); return 0; }
'文字'
は「文字定数」と呼ばれるものです(*)。変数 a
は文字 A を意味する値に,変数 b
は8進数で 101,そして変数 c
は16進数で 41 を意味する値に初期化されます。'\101'
も '\x41'
も文字定数です。また,printf
関数の変換指定子ですが,%c
はASCII文字,%o
は8進数,そして,%x
は16進数での出力を意味します。
実行結果です。
(a) A (65, 101, 41) (b) A (65, 101, 41) (c) A (65, 101, 41)
ASCIIコード表を確認すると,すべての変数が文字 A を意味していることが理解できます。
文字を扱うための型が char
ですが,「3.1. 型指定子」で見たように,char
型は整数上の変数です。整数と文字は,ASCIIコード表に従って1対1で対応しています。上の例の場合,コンピュータは,printf
において %c
を指定されたら ASCIIコード65の文字である A を出力し,%d
を指定されたら 10進法の65を出力するわけです。ASCIIコード表を見ると,ASCII文字は 127 までの整数に割り振られています。したがって,char
型で扱える整数は,signed char
で -127
から 127
となります。
*「文字定数」については「付録 文字定数,整数定数,浮動小数点定数」を参照。