トラック5・📦変数・型・演算子

変数とは名前付きの箱

読む目安 約12分・ゴール:宣言・代入・初期化を区別し、型のついた変数を正しく作って使える

アプリでこのトピックを学ぶ(無料・登録不要)

このトピックの要点

買い物に行く前、メモに「牛乳」「卵」と書いておきます。あとで見返せるように、情報を紙という場所に置いておく。プログラムの変数も同じで、値をとっておくための名前付きの箱です。

箱の作り方

#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の怖いところです。

ビット箱の名前は自分への手紙。3か月後の自分が読んで意味が分かる名前なら合格だよ。

まとめ

変数は名前付きの箱で、作るときに型で形が決まります。宣言・代入・初期化を区別し、宣言したらすぐ初期化。代入は右から左へのコピーで、コピー後は別々の箱です。

アプリでこのトピックを学ぶ(無料・登録不要)

確認問題

確認問題 1

変数の説明として最も適切なものはどれですか。

  1. 画面に文字を出すための命令
  2. 値をとっておくための、型と名前を持つ箱
  3. 計算式そのもの
  4. プログラムのファイル名
答えを見る

正解:B(値をとっておくための、型と名前を持つ箱)

変数は「値をとっておく名前付きの箱」です。作るときに型を指定し、その型が箱の大きさと入れられるものを決めます。宣言(箱を作る)・代入(中身を入れる)・初期化(作ると同時に入れる)の3語を区別して使えるようにしておきます。

確認問題 2

個数を入れる整数の箱を作ります。空欄に入る型はどれですか。

____ kosuu = 3;
  1. int
  2. double
  3. char
  4. bool
答えを見る

正解:A(int)

個数は整数なのでintです。double でも 3 は入りますが小数用の8バイトの箱を使うことになり、char は1文字用、bool は true / false 用です。型は「入れるものに合わせていちばん素直なもの」を選びます。

「変数・型・演算子」の目次

  1. 変数とは名前付きの箱
  2. int型と整数の世界
  3. 浮動小数点数 float / double
  4. char型と文字コード
  5. bool型と真偽——C23標準の書き方
  6. 定数——const と constexpr
  7. 算術演算子と優先順位
  8. 整数の割り算と剰余の罠
  9. 型変換——暗黙と明示
  10. 2進数・16進数リテラル(0b / 0x / 桁区切り')
  11. sizeofとメモリ上のサイズ
  12. オーバーフローという事件

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版の販売ページは準備中です。

ほかのトラック

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版