カテゴリ: C言語 更新日: 2026/01/26

C言語のシンボリック定数とは?マクロとの関係をやさしく解説!初心者でも安心の基本ガイド

C言語のシンボリック定数とは?マクロとの関係を解説
C言語のシンボリック定数とは?マクロとの関係を解説

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

生徒

「C言語のプログラムの中で、数字をそのまま書いているコードをよく見るんですけど、読みづらいと感じます。」

先生

「その気持ちは大事ですよ。同じ数字を何回も使うと、あとで変更も大変になりますし、意味も分からなくなります。」

生徒

「もっと分かりやすくする方法ってあるんですか?」

先生

「あります。それがシンボリック定数です。C言語ではよくマクロと一緒に使われます。これから詳しく説明していきましょう。」

1.シンボリック定数とは?

1.シンボリック定数とは?
1.シンボリック定数とは?

シンボリック定数とは、数字の代わりに名前をつけて使える定数のことです。プログラムの中で数値を直接書くと、その数字が何を意味するのか分かりづらくなります。例えば、1年を秒で表すと「31536000」という大きな数字になりますが、これをそのまま書くと非常に読みづらいです。

しかし名前をつければ、意味がはっきりします。


#define ONE_YEAR_SECONDS 31536000

こうすることで、後からコードを読んだ人にも何を表しているかが分かりやすくなります。これがシンボリック定数の大きなメリットです。

2.マクロとシンボリック定数の関係

2.マクロとシンボリック定数の関係
2.マクロとシンボリック定数の関係

C言語でシンボリック定数を作るときは、多くの場合#defineという機能を使います。#defineマクロと呼ばれる仕組みのひとつで、コンパイルの前に決まった文字列を置き換える役割を持ちます。

マクロを使うと、プログラム中で同じ数字を何回も書く必要がなくなり、ミスも減ります。


#define TAX_RATE 0.1

int main() {
    int price = 100;
    int tax = price * TAX_RATE;
    return 0;
}

TAX_RATEという名前を使うことで、数字の意味が明確になります。もし税率を変更したければ、#defineの一箇所を変えるだけで済みます。

3.数字を直接書くとどうなる?

3.数字を直接書くとどうなる?
3.数字を直接書くとどうなる?

例えば、プログラムに同じ数字が10か所あったとします。その数字を変更するとき、全部探して書き換えなければいけません。もし1か所でも書き換え忘れると、思わない動作になることもあります。

シンボリック定数を使えば、名前を変更するだけで済むので、非常に安全です。


#define MAX_USER 5

こうしておけば、プログラムの中でMAX_USERと書くだけで済みます。名前なので読みやすく、変更にも強いプログラムになります。

4.シンボリック定数は型を持たない?

4.シンボリック定数は型を持たない?
4.シンボリック定数は型を持たない?

マクロで作ったシンボリック定数は、実はを持ちません。コンパイル前に単なる文字置き換えとして扱われます。

つまり


#define NUMBER 10

と書いても、NUMBERは整数型ではなく、単に「10」という文字に置き換えられます。この違いは、C言語を深く学ぶときに役立ちます。

5.constとの違いも知っておこう

5.constとの違いも知っておこう
5.constとの違いも知っておこう

シンボリック定数と似た仕組みにconstがあります。constは「値を変更させない変数」を作る仕組みです。


const int MAX_VALUE = 100;

MAX_VALUEは整数型の定数として扱われます。しかしマクロと違って、型が存在します。メモリ上にもデータとして存在するので、デバッグ(動作確認)のときに扱いやすいことがあります。

ただし、C言語では多くの場面で#defineを使ったシンボリック定数が利用されています。これは歴史的な理由もあります。

6.よく使うシンボリック定数の例

6.よく使うシンボリック定数の例
6.よく使うシンボリック定数の例

シンボリック定数は、現実の意味を数字に与える場面に役立ちます。例えば、方向を数字で管理するプログラムがあるとします。


#define UP 0
#define DOWN 1
#define LEFT 2
#define RIGHT 3

数字のまま使うと「0は上?1は下?」と覚える必要がありますが、名前があれば一目で意味が分かります。

7.シンボリック定数でバグが減る理由

7.シンボリック定数でバグが減る理由
7.シンボリック定数でバグが減る理由

数字を直接書くと、人間は思い違いをしたり、打ち間違えることがあります。しかしシンボリック定数はキーボードで名前を打つだけなので、行動に間違いが起きにくくなります。

また、プログラムを初めて読む人、後から修正する人にとっても分かりやすいコードになります。プログラムの世界では、読みやすいコードがとても価値のあるものとされています。

8.シンボリック定数とマクロはC言語の基本

8.シンボリック定数とマクロはC言語の基本
8.シンボリック定数とマクロはC言語の基本

C言語は細かい制御ができる反面、記述を間違えると大きなバグにつながります。だからこそ意味をはっきりさせることが重要です。

マクロによるシンボリック定数は、初心者でも必ず覚えておくべき基本です。数字に意味を持たせるだけで、C言語のプログラムは読みやすく、安全なものになります。

関連記事:
カテゴリの一覧へ
新着記事
New1
C++
C++のメンバアクセス演算子を完全解説!初心者でもわかる . → :: の使い方まとめ
New2
Rust
Rustの文字列を極める!&str(文字列スライス)の基本概念とString型との違い
New3
C++
C++のキャスト演算子を完全解説!dynamic_cast・static_cast・const_cast・reinterpret_castを初心者向けに説明
New4
C++
C++開発のIDE選びを完全ガイド!初心者でもわかるCLion・Eclipse CDT・Qt Creator比較
人気記事
No.1
Java&Spring記事人気No1
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.2
Java&Spring記事人気No2
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.3
Java&Spring記事人気No3
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.4
Java&Spring記事人気No4
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.5
Java&Spring記事人気No5
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.6
Java&Spring記事人気No6
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.7
Java&Spring記事人気No7
C++
C++リンカとコンパイラのオプション設定を完全ガイド!初心者にもわかる開発環境の基礎
No.8
Java&Spring記事人気No8
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作