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 厳格なルール(コンパイラが強制)

  1. 含められるのは:文字数字アンダースコア_)のみ
  2. 数字で始められない
  3. C++のキーワードは使用不可intreturnifなど)
  4. 大文字小文字を区別ageAgeは別の変数
有効 ✅ 無効 ❌
myVar 1stPlace(数字で始まる)
_count my-var(ハイフン不可)
studentName int(予約語)
number99 my var(スペース不可)

(2) 3.2 推奨ルール(強く推奨)

⚠️ 注意: ループカウンター(ij)を除き、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識別子をサポート)だが、強く非推奨——コンパイラによって扱いが異なり、国際的な保守が困難。

📖 まとめ


📝 練習問題

  1. 初級(難易度 ⭐): 3つの変数を宣言するプログラムを書く:name(string)、age(int)、score(double)。値を代入して出力:

    TEXT 📖 参照専用
    私の名前はAlice、20歳、スコアは92.5です。
    
  2. 中級(難易度 ⭐⭐): ユーザーに円の半径を尋ね、円周と面積を計算して出力するプログラムを書く。πには定数を使用。

  3. 上級(難易度 ⭐⭐⭐): 温度変換プログラムを書く。ユーザーに華氏を尋ね、C = (F - 32) × 5 / 9を使って摂氏に変換し、小数1桁で出力。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%