📦 変数・型・演算子
🎯 宣言・代入・初期化を区別し、型のついた変数を正しく作って使える
買い物に行く前、メモに「牛乳」「卵」と書いておきます。あとで見返せるように、情報を紙という場所に置いておく。プログラムの変数も同じで、値をとっておくための名前付きの箱です。
箱の作り方
#include <stdio.h>
int main(void) {
int tanka = 250; // 宣言と同時に値を入れる(初期化)
int kosuu; // 宣言だけ
kosuu = 3; // あとから入れる(代入)
printf("%d 円 x %d 個 = %d 円\n", tanka, kosuu, tanka * kosuu);
return 0;
}int tanka = 250; は3つの意味を同時に持ちます。「整数用の箱を1つ用意する」「その箱に tanka という名札を付ける」「中身を250にする」。
箱を作ることを宣言、中身を入れることを代入、宣言と同時に入れることを初期化と呼びます。この3語は以後ずっと使うので、ここで区別しておきます。
箱には形(型)がある
箱を作るときは必ず型を指定します。型は箱の大きさと、入れられるものの種類を決めます。
・int … 整数(int。約 -21億〜21億)
・double … 小数(double)
・char … 1文字(char)
・bool … 真偽(bool。true / false)
🧪 ここはメモリの中身を1ステップずつ追う「メモリビジュアライザ」の場面です(アプリ本体で動きます)。
上のビジュアライザで、型の違う3つの箱が積まれていく様子を1行ずつ確かめてください。型ごとに箱の大きさが違うという事実が、あとでポインタを学ぶときの土台になります。
名前の付け方
・使えるのは英数字と _。先頭に数字は置けません。
・大文字と小文字は別物(kosuu と Kosuu は違う箱)。
・int や return などの予約語は使えません。
・意味の分かる名前にします。a より kosuu、x より tanka。
代入は「右から左へコピー」
#include <stdio.h>
int main(void) {
int a = 5;
int b = 3;
a = b; // b の中身を a に写す
b = 100; // b だけ変わる
printf("a=%d b=%d\n", a, b);
return 0;
}出力は a=3 b=100 です。a = b; は「a と b をつなぐ」のではなく「その瞬間の b の中身を a にコピーする」。写し終えたあと、2つは無関係になります。
罠・注意
初期化しない箱の中身はゴミ。 int n; と書いただけで中を読むと、前に誰かが使った残骸が出てきます。0とは限りません。宣言したらすぐ初期化する癖をつけます。
同じ名前で2回宣言できない。 同じ範囲の中では、名札は1つだけです。
型に合わないものは静かに変形する。 int n = 3.7; は 3 になります。エラーにならず黙って削られるのが、Cの怖いところです。
まとめ
変数は名前付きの箱で、作るときに型で形が決まります。宣言・代入・初期化を区別し、宣言したらすぐ初期化。代入は右から左へのコピーで、コピー後は別々の箱です。
値を入れておくための名前付きの箱のこと。名前をつけることで中身を自由に出し入れできる、プログラムの記憶場所にあたる。変数名は自由に付けられるが、意味の分かる名前にすると読みやすいコードになる。
変数に入れられる値の種類と、確保するメモリの大きさを決める分類のこと。箱の形や大きさを決めるルールのようなものだと考えるとよい。int・double・charなど、C言語にはあらかじめ複数の型が用意されている。
小数を含む数値を扱うための型のこと。floatより広い範囲と高い精度を持ち、実数計算における標準的な選択肢として使われる。小数点以下の桁数が多い計算でも、比較的高い精度を保てるのが特徴。
true(真)かfalse(偽)のどちらかしか入らない型のこと。C23では標準の書き方としてbool・true・falseがそのまま使えるようになった。従来は0と1で真偽を表していたが、C23の書き方の方が意図が伝わりやすい。
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。