C++: 変数と基本データ型
最終更新:2026-08-31
レッスン2でコンパイラが動くようになった。いよいよ本格的なコードを書き始める——最初に知る必要があるのはデータの格納方法。それが変数とデータ型の役割だ。
1. 変数とは何か?
変数は、データを格納できるメモリ上の名前付きボックス。
(1) 1.1 現実の例え
コンピュータのメモリを巨大なアパートビルと想像しよう。各部屋には住所(メモリアドレス)があり、住人(データ)を収容できる。変数を作成すると、そのアパートの一室を借りて名前を付ける。
(2) 1.2 なぜ変数が必要か?
変数がなければ、プログラムは実行ごとに毎回同じになる。変数があれば:
- ユーザー入力を格納
- 変化する値を追跡
- 再利用可能なロジックを構築
2. C++の基本データ型
C++には5つの基本的なデータ型がある:
| 型 | 格納するもの | 例 | メモリ |
|---|---|---|---|
int |
整数 | 25, -100, 0 |
4バイト |
double |
小数 | 3.14, -0.5, 99.9 |
8バイト |
char |
1文字 | 'A', '9', '$' |
1バイト |
bool |
真または偽 | true, false |
1バイト |
string |
テキスト(複数文字) | "Hello", "C++" |
可変 |
(1) 2.1 変数の宣言
構文:型 変数名;
CPP
int age; // 'age'という名前の整数変数を宣言
double price; // 'price'という名前のdouble変数を宣言
char grade; // 'grade'という名前のchar変数を宣言
bool isReady; // 'isReady'という名前のbool変数を宣言
(2) 2.2 宣言と初期化
宣言と同時に値を代入できる:
CPP
int age = 25;
double price = 19.99;
char grade = 'A';
bool isReady = true;
string name = "Alice";
C++11では波括弧初期化が導入され、より安全:
CPP
int age{25};
double price{19.99};
💡 ヒント: 変数は常に初期化しよう!初期化されていない変数にはメモリに残っていたゴミデータが入っている——使用すると予測不能な結果になる。
▶ サンプル 1:円の面積を計算(難易度 ⭐)
CPP
#include <iostream>
int main() {
double radius = 5.0;
double pi = 3.14159;
double area = pi * radius * radius;
std::cout << "半径: " << radius << std::endl;
std::cout << "面積: " << area << std::endl;
return 0;
}
3. 変数の命名規則
(1) 3.1 厳格なルール(コンパイラが強制)
- 含められるのは:文字、数字、アンダースコア(
_)のみ - 数字で始められない
- C++のキーワードは使用不可(
int、return、ifなど) - 大文字小文字を区別:
ageとAgeは別の変数
| 有効 ✅ | 無効 ❌ |
|---|---|
myVar |
1stPlace(数字で始まる) |
_count |
my-var(ハイフン不可) |
studentName |
int(予約語) |
number99 |
my var(スペース不可) |
(2) 3.2 推奨ルール(強く推奨)
- キャメルケース:
studentName、totalScore(C++で最も一般的) - 意味のある名前:
aよりage、tpよりtotalPrice - 定数は大文字:
const double PI = 3.14159;
⚠️ 注意: ループカウンター(
i、j)を除き、1文字の変数名は避ける。コードは書くより読まれる方が多い——読みやすくしよう。
4. 定数
定数は、初期化後に値を変更できない変数。
CPP
const double PI = 3.14159;
const int DAYS_IN_WEEK = 7;
💡 ヒント: 変更すべきでない値には
constを使う。コードがより安全になり、他の開発者に意図を伝えられる。
5. cinとcoutによる入出力
(1) 5.1 coutによる出力
cout(「シー・アウト」と読む)は画面にデータを出力:
CPP
#include <iostream>
int main() {
std::cout << "Hello, C++!" << std::endl;
std::cout << "答えは: " << 42 << std::endl;
return 0;
}
<<(挿入演算子)を使ってcoutにデータを送る。std::endlで改行。
(2) 5.2 cinによる入力
cin(「シー・イン」と読む)はキーボードからデータを読み取る:
CPP
#include <iostream>
int main() {
int age;
std::cout << "年齢を入力: ";
std::cin >> age;
std::cout << "あなたは" << age << "歳です。" << std::endl;
return 0;
}
>>(抽出演算子)を使って変数にデータを読み込む。
▶ サンプル 2:対話型電卓(難易度 ⭐⭐)
CPP
#include <iostream>
int main() {
double num1, num2;
std::cout << "最初の数を入力: ";
std::cin >> num1;
std::cout << "2番目の数を入力: ";
std::cin >> num2;
double sum = num1 + num2;
double diff = num1 - num2;
double product = num1 * num2;
double quotient = num1 / num2;
std::cout << "和: " << sum << std::endl;
std::cout << "差: " << diff << std::endl;
std::cout << "積: " << product << std::endl;
std::cout << "商: " << quotient << std::endl;
return 0;
}
💡 ヒント: このプログラムはユーザーから2つの数を読み取り、基本的な算術を実行。
double型を使っているので、割り算で小数結果が得られる。
▶ サンプル 3:型変換と定数(難易度 ⭐⭐)
CPP
#include <iostream>
int main() {
const double PI = 3.14159;
const int MAX_SCORE = 100;
int score = 85;
double percentage = (static_cast<double>(score) / MAX_SCORE) * 100;
std::cout << "スコア: " << score << " / " << MAX_SCORE << std::endl;
std::cout << "パーセント: " << percentage << "%" << std::endl;
// 整数割り算 vs 小数割り算
int a = 7, b = 2;
std::cout << "整数割り算: " << (a / b) << std::endl; // 3
std::cout << "小数割り算: " << (7.0 / 2.0) << std::endl; // 3.5
return 0;
}
出力:
TEXT 📖 参照専用スコア: 85 / 100 パーセント: 85% 整数割り算: 3 小数割り算: 3.5
❓ よくある質問
Q intとdoubleの違いは?いつどちらを使う?
A
intは整数(例:25、-3)を格納、doubleは小数(例:19.99、3.14)を格納。目安:カウント/年齢/年 → int;価格/身長/平均 → double。Q なぜcharはシングルクォート、stringはダブルクォート?
A
charは1文字——シングルクォート('A')。stringは文字の並び——ダブルクォート("Hello")。全く異なる型。Q constと#defineの違いは?
A
constは型チェック付きのC++キーワード——安全で推奨。#defineは型チェックなしのCプリプロセッサマクロ——モダンC++では避けるべき。Q 変数名に日本語を使える?
A 技術的には可能(C++11はUnicode識別子をサポート)だが、強く非推奨——コンパイラによって扱いが異なり、国際的な保守が困難。
📖 まとめ
- 変数はメモリ上の名前付き格納ボックス
- C++には5つの基本型:
int、double、char、bool、string - 宣言:
型 名前;| 初期化:型 名前 = 値; - 定数は
constを使用 ——値を変更不可 cinで入力、coutで出力- キャメルケースで意味のある名前を使用
📝 練習問題
-
初級(難易度 ⭐): 3つの変数を宣言するプログラムを書く:
name(string)、age(int)、score(double)。値を代入して出力:TEXT 📖 参照専用私の名前はAlice、20歳、スコアは92.5です。 -
中級(難易度 ⭐⭐): ユーザーに円の半径を尋ね、円周と面積を計算して出力するプログラムを書く。πには定数を使用。
-
上級(難易度 ⭐⭐⭐): 温度変換プログラムを書く。ユーザーに華氏を尋ね、
C = (F - 32) × 5 / 9を使って摂氏に変換し、小数1桁で出力。