
C言語のきほん|C言語の定数の基本
変数に入る値にはルールがある。C言語の定数を知ると、コードの意味がはっきり見えてくる。
前の節では、変数はデータを入れておく箱であり、初期化や代入で値を入れることを学びました。
では、その「入れる値」そのものは、C言語では何と呼ぶのでしょうか。
それが 定数 です。
変数が「あとから値を変えられる入れ物」なのに対して、定数はソースコードに直接書く 固定の値 です。
たとえば 123 や 3.14 や A や こんにちは のような値は、プログラム中では定数として扱われます。
このパートでは、C言語でよく使う定数を、次のように整理しながら見ていきます。
- 整数定数(10進数、8進数、16進数)
- 浮動小数点定数(小数、指数形式)
- 文字定数
- 文字列リテラル
ここは、これから先の計算・文字処理・入出力の土台になる大事なところです。
最初は「名前が多いな」と感じるかもしれませんが、実際にコード例と一緒に見ていくとすぐ慣れます。
まずは、定数は「ソースコードに直接書く値」 という感覚をしっかりつかんでいきましょう。
変数と定数の違いをイメージしよう
まずは、いちばん大事な違いをはっきりさせておきましょう。
例:
int number = 123;この1行の中には、変数と定数の両方が出てきます。
- number → 変数(値を入れる箱)
- 123 → 定数(ソースコードに書いた固定の値)
図でイメージ

ここでの 123 は、ソースコード上で 123 と書かれている固定の値です。
number はあとから 200 に変えたり 0 にしたりできますが、ソースコードに書いた 123 自体は「その場では固定の値」です。
定数の種類を先に一覧で見よう
C言語の定数は、主に次のように分類できます。
本文の表を、見やすく整理してまとめます。
主な定数の分類
| 分類 | 種類 | 表記方法 | 例 |
|---|---|---|---|
| 整数定数 | 10進定数 | ふつうの整数 | 123 |
| 整数定数 | 8進定数 | 先頭に0 | 0173 |
| 整数定数 | 16進定数 | 先頭に0xまたは0X | 0x7b, 0X7B |
| 浮動小数点定数 | 10進小数 | 小数点を使う | 3.14 |
| 浮動小数点定数 | 指数形式 | e または E を使う | 1.23e-12 |
| 浮動小数点定数 | 16進浮動小数点(C99以降) | 0x + p/P 指数 | 0xa.fp-10 |
| 文字定数 | 1文字 | シングルクォーテーションで囲む | 'A', '\n' |
| 文字列リテラル | 文字列 | ダブルクォーテーションで囲む | "ABC", "computer" |
ここではまず、よく使うものから順番に覚えるのがおすすめです。
特によく使うのは次の4つです。
- 10進整数定数(123)
- 10進浮動小数点定数(3.14)
- 文字定数('A')
- 文字列リテラル("ABC")
サンプルプログラム: 定数の種類を表示してみる
定数の種類をまとめて確認できるシンプルなプログラム例です。
ファイル名:4_4_1.c
// いろいろな定数を表示するプログラム
#include <stdio.h>
int main(void)
{
printf("10進整数定数: %d\n", 123);
printf("8進整数定数 0173 を10進で表示: %d\n", 0173);
printf("16進整数定数 0x7B を10進で表示: %d\n", 0x7B);
printf("浮動小数点定数: %.2f\n", 3.14);
printf("指数形式の浮動小数点定数: %e\n", 1.23e-12);
printf("文字定数: %c\n", 'A');
printf("文字列リテラル: %s\n", "C言語を学習中です");
return 0;
}実行結果例
10進整数定数: 123
8進整数定数 0173 を10進で表示: 123
16進整数定数 0x7B を10進で表示: 123
浮動小数点定数: 3.14
指数形式の浮動小数点定数: 1.230000e-12
文字定数: A
文字列リテラル: C言語を学習中ですこのプログラムでは、同じ 123 でも表記の仕方を変えると「8進」「16進」として書けることが確認できます。
整数定数を理解しよう
整数定数は、整数の値をそのまま書く定数です。
C言語では、10進数だけでなく 8進数・16進数でも書ける のが特徴です。
10進定数
これはいちばん普段どおりの書き方です。
例:
123
456
2026特別なルールはほとんどなく、普段の整数と同じ感覚で使えます。
最初はこの10進定数を中心に使っていけば大丈夫です。
8進定数
8進定数は、先頭に 0 を付ける ことで表します。
例:
0173これは 10進数の 173 ではなく、8進数の 173 という意味です。
8進数の 173 は、10進数に直すと 123 になります。
ここはとても大事(注意)
けた合わせのつもりで 0123 のように先頭に 0 を付けると、C言語では 8進数として解釈されます。
つまり、
- 123 → 10進数の123
- 0123 → 8進数の123(10進数では83)
のように、意味が変わってしまいます。
初心者のうちは、10進数に先頭の0を付けない と覚えておくと安心です。
16進定数
16進定数は、先頭に 0x または 0X を付ける ことで表します。
例:
0x7b
0X7Bどちらも同じ意味で、10進数の 123 を表します。
16進数は、メモリダンプや色コード、ビット操作の場面などでよく使われます。
16進数で使う文字
16進数では 0〜9 に加えて、A〜F(または a〜f)を使います。
- A = 10
- B = 11
- C = 12
- D = 13
- E = 14
- F = 15
整数定数の比較表(よく使う例)
| 表記 | 種類 | 10進での値 |
|---|---|---|
| 123 | 10進定数 | 123 |
| 0173 | 8進定数 | 123 |
| 0x7B | 16進定数 | 123 |
同じ値でも、表現方法を変えられるのがC言語の特徴です。
ただし、最初は無理に使い分けなくて大丈夫です。必要になったら使う、でOKです。
浮動小数点定数を理解しよう
浮動小数点定数は、小数を表す定数です。
たとえば 3.14 や 0.5 のような値ですね。
10進浮動小数点定数(小数点形式)
いちばんよく使うのは、小数点を含む書き方です。
例:
3.14
0.5
12.0小数点があることで、整数定数ではなく浮動小数点定数として扱われます。
10進浮動小数点定数(指数形式)
とても大きい数やとても小さい数は、指数形式で書けます。
e または E を使って、10の何乗かを表します。
例:
1.23e-12
1.23E-12これはどちらも同じ意味で、
1.23 × 10-12
を表します。
指数形式のイメージ

科学計算や非常に小さい値・大きい値を扱うときに便利です。
16進浮動小数点定数(C99以降)
これは少し特殊な表記です。
一般的な初学者向けのコードでは、ほとんど使いません。
例:
0xa.fp-10
0XA.FP-10これは 16進数の小数表現 + 2のべき乗指数で書く形式です。
指数部が e/E ではなく p/P になるのがポイントです。
覚え方(初学者向け)
- 存在は知っておく
- すぐ使えなくても大丈夫
- 実務や特殊な用途で必要になることがある
今の段階では、10進の小数点形式と指数形式が使えれば十分です。
文字定数と文字列リテラルの違い
ここはとても大事です。
見た目が似ていますが、意味が違います。
文字定数
文字定数は、1文字 を表す定数で、シングルクォーテーションで囲みます。
例:
'A'
'\n'- 'A' は文字 A
- '\n' は改行を表す特殊な文字(エスケープシーケンス)
文字定数のポイント
- 1文字を表す
- シングルクォーテーションを使う
- printf では %c で表示することが多い
文字列リテラル
文字列リテラルは、文字の並び(文字列) を表す定数で、ダブルクォーテーションで囲みます。
例:
"ABC"
"computer"
"こんにちは"文字列リテラルのポイント
- 複数文字を表せる
- ダブルクォーテーションを使う
- printf では %s で表示することが多い
文字定数と文字列リテラルの比較表
| 種類 | 例 | 囲み方 | 使い方のイメージ |
|---|---|---|---|
| 文字定数 | 'A' | シングルクォーテーション | 1文字 |
| 文字列リテラル | "A" | ダブルクォーテーション | 文字列(1文字以上) |
ここで大事なのは、'A' と "A" は別物 だということです。
見た目は似ていますが、C言語では型も用途も違います。
定数は初期化や代入でよく使う
定数は、前の節で学んだ初期化や代入の場面でよく使います。
初期化で使う例
int score = 80;
double pi = 3.14;
char grade = 'A';代入で使う例
score = 90;
pi = 3.14159;
grade = 'B';このように、定数は「変数に入れる値」として頻繁に登場します。
ちょっと注意したいポイント(初心者向け)
➀ 先頭の0に注意(8進数になる)
これは本文でも特に大事な注意点です。
例:
int a = 123; // 10進数の123
int b = 0123; // 8進数の123(10進数では83)見た目が似ているので、かなり間違えやすいです。
10進数を書きたいときは、先頭に 0 を付けないようにしましょう。
➁ 'A' と "A" を混同しない
- 'A' は文字定数
- "A" は文字列リテラル
この違いは、printf の書式指定子にも関係します。
- %c → 文字
- %s → 文字列
例:
printf("%c\n", 'A');
printf("%s\n", "A");どちらも表示は A ですが、中身の意味は違います。
➂ 小数は浮動小数点誤差があることを思い出そう
前の記事で学んだように、3.14 や 0.2 のような小数は、内部では誤差を含むことがあります。
定数として書いても、その性質は同じです。
なので、浮動小数点定数は「厳密にぴったりではないことがある」と意識して使うのが大事です。
定数の種類を確認するミニサンプル
最後に、学習用として見やすいミニサンプルをもう1つ載せます。
ファイル名:4_4_2.c
// 定数の種類を確認するプログラム
#include <stdio.h>
int main(void)
{
int decimal_value = 123; // 10進整数定数
int octal_value = 0173; // 8進整数定数(10進では123)
int hex_value = 0x7B; // 16進整数定数(10進では123)
double pi = 3.14; // 浮動小数点定数(小数点形式)
double tiny = 1.23e-12; // 浮動小数点定数(指数形式)
char symbol = 'A'; // 文字定数
printf("10進: %d\n", decimal_value);
printf("8進: %d\n", octal_value);
printf("16進: %d\n", hex_value);
printf("pi = %.2f\n", pi);
printf("tiny = %e\n", tiny);
printf("文字定数 = %c\n", symbol);
printf("文字列リテラル = %s\n", "定数の確認ができました");
return 0;
}まとめ
このパートでは、C言語の定数の基本を整理しました。
- 定数はソースコードに直接書く固定の値
- 変数は値を入れる箱、定数は箱に入れる中身
- 整数定数には 10進・8進・16進 がある
- 浮動小数点定数には小数点形式と指数形式がある
- 文字定数は シングルクォーテーション
- 文字列リテラルは ダブルクォーテーション
最初は種類が多く見えますが、よく使うのはまずこのあたりです。
- 123(整数定数)
- 3.14(浮動小数点定数)
- 'A'(文字定数)
- "ABC"(文字列リテラル)
ここをしっかり押さえておくと、これからの変数・演算・表示の学習がかなりスムーズになります。
次のコードを書くときは、ぜひ「これは変数かな?定数かな?」と意識しながら見てみてください。
