変数の型とは? 2007年5月9日
年齢を聞いただけじゃ寂しすぎる、今回は名前を聞いてみよう。
年齢というデータと、氏名というデータの大きな違いはなんだろう?「20年前はお母さんかわいかったのよぉ」とか「次の御柱は3年後だから、ンン才かぁ」と言いながら、私たちは頭の中で、自分の年齢から20引いたり、自分の年齢に3足したりする。では「私は今井ですから、前川を足すとちょうど長野諏訪子になります。」なんてまるでなぞなぞ。そう、年齢のデータは計算に使える数値データ、氏名は計算に使えない文字データなのだ。
数値データ、文字データはさらにいくつかに分類される。そしてそれぞれ整数型、実数型、文字型、文字列型と呼んでいる。変数は、中にどんなデータをしまうかによって、このどれかの型に分類される。まるで人間の血液型のよう。変数ageは整数型ですか、では竹を割ったようなさっぱりした性格でしょう。変数nameは文字列型ですか、それはそれは、繊細でおしとやかな性格でしょ、なんて。
数値データ
年齢、個数などの小数点の付かない数値データ 「5」とか「-123」とか→整数型
100m走のタイムなどの小数点の付いた数値データ 「1.2」とか「0.1」とか→実数型
文字データ
1文字だけの文字データ 「a」とか「t」とか→文字型
氏名などの、1字以上の長さの文字データ 「日本」とか「japan」とか→文字列型
変数にどの型のデータが入るのかは、宣言のときに指定する。int型といったん宣言したら、その変数は一生int型。変更できない。これも血液型と同じ。
・整数型
int型を一番よく使う。他にもshortやlongなどもあるが、とにかくint型で差し当たり困らない。次のように宣言する。
int age;
・実数型
double型をよく使う。他にfloat型があるが、とにかくdouble型で差し当たり困らない。次のように宣言する。
double weight;
・文字型
char型。1文字しか入らないので、差し当たりそんなに登場しない。
char rank;
・文字列型
文字型の配列を利用する。配列の意味はまだ知らなくてよい。次のように宣言すると半角で最大19文字までの長さの文字列が入れられる。
char name[20];
名前を入力して、そのまま画面に表示する処理は次の通り。変数名はnameにしてみた。一応半角で19文字まで入る。全角では半分しか入らないので、最大9文字になる。ちょっと少ないかな。まあご勘弁。前回の年齢のプログラムと比較してみよう。
#include <stdio.h>
main() {
char name[20]; ←変数nameの型は整数型のintでなく、文字列型にする
scanf("%s", name); ←%dが%sに、nameの頭に&が付いていない
printf("%s\n", name); ←%dが%sになっている
return 0;
}
<前へ|次へ>
<前へ|次へ>