char 型は文字を代入することが多いというだけで, 1 byte で表わされる範囲
の整数を扱うことも出来ます. 1 byte = 8 bit ですので, 0 から
までの整数, または,
から,
までの整数
が扱えます. どちらの範囲の整数が使用できるかは, コンパイラーによって
異なりますので, 0 から 127 までを使うようにするのが無難でしょう.
次のプログラムを見て, 変数の型とその表示の方法について復習しましょう. 重要な事は, プログラムの中でデータを解釈するのは, そのプログラムを 組む人であって, コンピュータではないと言う事です. プログラムの中で配列が出て来ますが, 配列のより詳しい扱い方は, 後の講義で説明します.
/* char, int, double */
/* File name 3-1.c */
#include <stdio.h>
main()
{
char moji;
int suji; /* Integer: from -2147483648 to 2147483647 */
double shosu;
char bun[80];
moji = '!';
suji = 2;
shosu = 14.0;
sprintf(bun, "is St. Valentine's day.");
printf("%d %2.0f %s%c \n", suji, shosu, bun, moji);
}
文字列をchar型の配列に代入するには, ライブラリ関数 sprintf を使います
(string printf と考えて下さい, string は文字列の意).
使い方は printf と同様ですが, 最初の引き数にchar型の配列の配列名,
2番目の引き数には, 文字列を printf と同じ形式で"で括って書きます.
その際, 代入する文字列よりも配列の長さを長くとっておきます.
注意その他の部分のプログラムの説明はコメントに書いてある通りです. 上のプログラムをタイプして実行してみて下さい.
sprintf(bun, "is St. Valentine's day.");
の部分は
bun = "is St Valentine's day.";
とすることは出来ません. すなわち, 配列の代入はできません.
次に文字型変数に整数を代入して出力する例をみてみましょう. 次のプログラムを良く読んで出力結果を 予想して下さい, それから実際に作成して実行してみて下さい. やってみるとわかるように, 文字型変数に代入した'文字'は対応するコード (整数)を値として持っています.
注意 この講義で使っている C コンパイラの日本語の扱いは 不完全なようなので, printf の文字列は全て英文にしてあります.
/* File name 3-2.c */
#include <stdio.h>
main()
{
char a, b, c, one, two, three;
a = 65; b = 66; c = 67;
printf("%d %d %d\n", a, b, c);
printf("%x %x %x\n", a, b, c);
printf("%c %c %c\n", a, b, c);
one = 0x31;
two = 0x32;
three = 0x33;
printf("%d %d %d\n", one, two, three);
printf("%c %c %c\n", one, two, three);
}