変数とデータ型
値を入れておく箱
第1章では printf に出したい文字をそのまま書いていました。ただ、これから育てていく成績管理アプリでは、点数のように「実行するたびに変わる値」を扱います。そこで使うのが変数です。変数は値を入れておく箱で、C では箱を使う前に「どんな種類の値を入れるか」を必ず宣言します。
まずは3つの型
C にはたくさんの型がありますが、この章で使うのは次の3つです。
int整数を入れる。点数や人数に使うdouble小数を入れる。平均点に使うchar1文字を入れる。学生のイニシャルに使う
宣言は「型 名前;」の形です。宣言と同時に値を入れることもできます。
int score; /* 宣言だけ */
score = 78; /* あとから代入 */
double average = 78.5; /* 宣言と同時に代入 */
char initial = 'S';なぜ型を書かせるのか
Python や JavaScript では型を書かずに変数を作れます。C が型を要求するのは、コンパイルの時点で「この箱に何バイト必要か」を決めてしまうからです。int はふつう4バイト、double は8バイトです。大きさが実行前に決まっているぶん、C は速く動きます。
その代わり、箱に入らないものは切り捨てられます。int の箱に小数を入れると、小数部分は黙って消えます。
int n = 3.9; /* n は 3 になる。四捨五入もしてくれない */この「黙って消える」性質は、あとで平均点を出すときに事故として出てきます。この章の後半で正面から扱います。
文字はシングルクォート、文字列はダブルクォート
char に入れられるのは1文字だけで、シングルクォートで囲みます。ダブルクォートで囲むと文字列という別のものになり、char には入りません。C で最初につまずくところなので、ここで区別を付けておきます。
char initial = 'S'; /* 正しい */
char initial = "S"; /* 型が違うので怒られる */変数の中身を表示する
printf で変数の値を出すときは、出したい場所に印を置き、カンマのあとに変数を並べます。int は %d、double は %f、char は %c です。
printf("点数は%d点です\n", score);%f で double を出すと、小数点以下がいつも6桁並びます。桁を自分で決めるやり方は次回に扱います。
名前の付け方
変数名に使えるのは英数字とアンダースコアで、先頭に数字は置けません。大文字と小文字は区別されるので、score と Score は別の変数です。int や return のように C があらかじめ使っている語も名前にできません。
名前そのものは自由ですが、a や x ではなく score や average のように中身が分かる名前を付けてください。この講座では最後に600行近いプログラムを1本書きます。そこまで育ったときに効いてくるのは、名前の読みやすさです。
要件
- int の変数 score に 78 を入れる
- double の変数 average に 78.5 を入れる
- char の変数 initial に S を入れる
- 「点数は78点です」「平均は78.500000点です」「イニシャルはSです」の3行を出す
入出力例
main("") → "点数は78点です
平均は78.500000点です
イニシャルはSです"