カテゴリ: C++ 更新日: 2026/01/14

C++のconst変数とconstexprの違いを完全解説!初心者でもわかる定数の考え方

const変数とconstexprの違い
const変数とconstexprの違い

先生と生徒の会話形式で理解しよう

生徒

「C++でconstとconstexprって書いてあるのを見たんですが、何が違うんですか?」

先生

「どちらも値を変えられないようにする仕組みですが、いつ値が決まるかが違います。」

生徒

「いつ決まるか、というのがよく分かりません…」

先生

「日常生活の例を交えながら、const変数とconstexprの違いを説明します。」

1. 定数という考え方

1. 定数という考え方
1. 定数という考え方

C++の変数とデータ型を学んでいると、 「この値は途中で変わってほしくない」という場面が出てきます。 そのようなときに使うのが定数です。

定数とは、プログラムの途中で値を書き換えられないものです。 例えば、円周率や消費税率のように、 勝手に変わると困る値を思い浮かべると分かりやすいでしょう。

C++では、定数を表す方法として、 constconstexprという二つの仕組みがあります。

2. const変数とは

2. const変数とは
2. const変数とは

const変数は、「この変数の値は変更しません」と コンピュータに約束するための書き方です。 一度値を入れたら、その後は変更できません。

constは「定数」という意味の英単語constantの省略形です。 C++のプログラムでは、とてもよく使われます。


#include <iostream>

int main() {
    const int maxScore = 100;
    std::cout << maxScore << std::endl;
    return 0;
}

100

この例では、maxScoreはconst変数なので、 プログラムの途中で別の数字を代入することはできません。

ノートに「このページは消さない」と書いておくようなイメージです。 読むことはできますが、書き換えはできません。

3. const変数の値が決まるタイミング

3. const変数の値が決まるタイミング
3. const変数の値が決まるタイミング

const変数の重要な特徴は、 実行中に値が決まっても問題ないという点です。

例えば、ユーザーの入力や計算結果を const変数に入れることもできます。


#include <iostream>

int main() {
    int input;
    std::cin >> input;
    const int fixedValue = input;
    std::cout << fixedValue << std::endl;
    return 0;
}

(入力した数値が表示される)

このように、const変数は 「後から値が決まってもいいが、決まったら変えない」 という性質を持っています。

4. constexprとは何か

4. constexprとは何か
4. constexprとは何か

constexprは、「必ず最初から値が分かっている定数」 を表すための仕組みです。

constexprは、「コンパイル時定数」と呼ばれることもあります。 コンパイルとは、プログラムを実行できる形に準備する作業です。

constexprで宣言された値は、 プログラムが動き出す前に決まっていなければなりません。


#include <iostream>

int main() {
    constexpr int daysInWeek = 7;
    std::cout << daysInWeek << std::endl;
    return 0;
}

7

曜日の数のように、最初から変わらないと分かっている値は、 constexprで表すと意味が伝わりやすくなります。

5. constとconstexprの決定的な違い

5. constとconstexprの決定的な違い
5. constとconstexprの決定的な違い

constとconstexprの一番大きな違いは、 値がいつ確定するかです。

const変数は、プログラムが動き始めてから 値が決まっても構いません。 しかし、constexprは、準備段階ですでに 値が確定している必要があります。

例えるなら、constは「朝に決めた予定」、 constexprは「カレンダーに印刷されている祝日」です。 どちらも変わりませんが、決まる時期が違います。

6. 使い分けの考え方

6. 使い分けの考え方
6. 使い分けの考え方

C++の変数とデータ型を学ぶ初心者の方は、 まずはconstを使って、 「この値は変えない」という意識を持つことが大切です。

その中で、最初から必ず決まっている数値や設定値は、 constexprを使うと、より安全で分かりやすいコードになります。

constとconstexprを正しく使い分けることで、 プログラムの意図が伝わりやすくなり、 間違いも減らすことができます。

カテゴリの一覧へ
新着記事
New1
C++
C++のconst変数とconstexprの違いを完全解説!初心者でもわかる定数の考え方
New2
Rust
RustのCargo.tomlの書き方と設定項目まとめ!プロジェクト管理とビルド設定を初心者向けに完全解説
New3
C言語
C言語の型変換(キャスト)を徹底解説!初心者向けにわかりやすく説明
New4
C言語
C言語の演算子まとめ!初心者でもわかる算術・比較・論理・ビット演算の基本
人気記事
No.1
Java&Spring記事人気No1
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.2
Java&Spring記事人気No2
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作
No.3
Java&Spring記事人気No3
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.4
Java&Spring記事人気No4
C言語
LinuxでC言語開発環境を構築する方法【GCCとMakefileの基本】
No.5
Java&Spring記事人気No5
C++
CMakeの基本構文とCMakeLists.txtを初心者向けに解説
No.6
Java&Spring記事人気No6
C言語
C言語の静的変数staticを完全ガイド!初心者でもわかる仕組みと使い方
No.7
Java&Spring記事人気No7
C言語
C言語の配列と文字列の基本を完全ガイド!初心者でもわかる宣言と使い方
No.8
Java&Spring記事人気No8
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】