
C言語基礎|型と定数の基本
型と定数の基本 ― 数値にも「種類」がある
これまでの学習では、変数に型があることを見てきましたね。
実はそれだけでなく、プログラム中に直接書かれている数値(定数)にも型があります。
この章では、
- 定数にも型があること
- 整数と実数で計算結果が変わる理由
- double 型での演算と注意点
を、具体的なプログラムを使って確認していきます。

定数にも型がある
まず覚えておきたいのは、数値そのものにも型があるという点です。
整数定数
5 や 120 のように、小数点を含まない数値は 整数定数 と呼ばれます。
| 例 | 基本の型 |
|---|---|
| 5 | int |
| 37 | int |
特別な指定をしない限り、これらは int 型として扱われます。
浮動小数点定数
3.14 や 0.5 のように、小数点を含む数値は 浮動小数点定数 です。
| 例 | 基本の型 |
|---|---|
| 3.14 | double |
| 2.0 | double |
小数点が含まれているだけで、自動的に double 型 になる点が重要です。
定数と型の関係
| 定数 | 型 |
|---|---|
| 5 | int |
| 3.14 | double |
このように、見た目の書き方だけで型が決まる ことが多いのが、C言語の特徴です。
double 型を使った演算をしてみよう
ここからは、整数ではなく 実数を使った計算 を行うプログラムを見ていきます。
元の例とは内容を変え、距離と時間から速度を求める プログラムにしてみましょう。
サンプルプログラム(実数値の演算)
プロジェクト名:chap2-7-1 ソースファイル名:chap2-7-1.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
// 実数値を使って速度を計算するプログラム
#include <stdio.h>
int main(void)
{
double distance, time;
puts("距離と時間を入力してください。");
printf("距離(km):"); scanf("%lf", &distance);
printf("時間(h):"); scanf("%lf", &time);
printf("平均速度は %f km/h です。\n", distance / time);
return 0;
}実行例
距離と時間を入力してください。
距離(km):150.5
時間(h):2.5
平均速度は 60.200000 km/h です。scanf と printf における double 型の指定
実数を扱うときに、特に注意が必要なのが 変換指定 です。
double 型の読み込み
double 型の変数に値を読み込む場合、scanf では %lf を使います。
- l は小文字のエル
- 数字の 1 ではない
という点に注意してください。
変換指定の使い分け
| 用途 | int 型 | double 型 |
|---|---|---|
| scanf 読み込み | scanf("%d", &n); | scanf("%lf", &x); |
| printf 表示 | printf("%d", n); | printf("%f", x); |
printf では %f を使う、という点もセットで覚えておくと安心です。
double 型では剰余は求められない
ここで、演算子についても整理しておきましょう。
加算・減算・乗算・除算は、double 型でも問題なく使えます。
しかし、剰余を求める % 演算子だけは例外 です。
なぜ % は使えないのか
- % 演算子は「割り算の余り」を求める演算子
- 割り算の余りは、整数どうしでのみ意味を持つ
そのため、
x % yのような式を double 型で書くと、コンパイルエラー になります。
重要ポイント
| 項目 | 内容 |
|---|---|
| 使用可能 | +, -, *, / |
| 使用不可 | % |
| 理由 | 剰余は整数演算専用 |
型は設計図、変数や定数は実体
ここで、型と値の関係をもう一度整理しておきましょう。
- 型:扱える値の種類や計算方法を決める設計図
- 変数や定数:その設計図に従って扱われる実体
たい焼きで例えるなら、
- 型 → たい焼きの型
- 数値(変数・定数) → 焼き上がったたい焼き
という関係です。
まとめ:型と定数を意識しよう
| 項目 | ポイント |
|---|---|
| 定数にも型がある | 5 は int、3.14 は double |
| 小数を含めたい | double 型を使う |
| 実数の入力 | scanf では %lf |
| 剰余演算 | % は整数専用 |
計算結果が「思った通りにならない」ときは、
変数の型だけでなく、定数の型にも注目する
という意識を持つと、バグに早く気づけるようになります 😊
