
C言語入門|整数型で気をつけるべきこと:型の選び方とオーバーフローの仕組み
C言語の整数型といえば「char・short・int・long」の4種類。
すでに代表的な型について学びましたが、整数型を扱うときには重要な注意ポイントがあります😊
- どの型を選べばいいの?
- int だけ使えばダメなの?
- すごく大きい数を入れたらどうなるの?
- オーバーフローって何?
こうした疑問を、図と表を使いつつわかりやすく解説していきます🌟

🔢 まず押さえたい!整数型は「基本 int」でOK
昔のコンピュータはメモリもCPUもとても貧弱で、
「少しでも軽い型を使って節約する必要があった」ため、
char や short が多用されました。
しかし、いまのコンピュータは処理性能が十分に高く、
🌟 基本方針
整数を扱いたいときは、とりあえず int を使えば安心!
というのが現代的で実用的な型選びのコツです😄
🔍 読みやすさUP!桁区切り記号の活用
大きな値をコードにそのまま書こうとすると、桁の見間違いが起こりやすくなります。
そこで便利なのが「桁区切りの一重引用符」。
(実行時には無視されるので動作に影響はありません)
int population = 121270000;
int population2 = 121'270'000; // こちらの方が読みやすい!どこに区切りを入れても OK なので、読みやすさを優先して使いましょう🌸
🌈 unsigned 型とは?
整数型には、unsigned int、unsigned char のように
unsigned を付けた派生型も存在します。
✔ unsigned の意味
- マイナスを使わない整数型(非負の整数専用)
- そのかわり、扱える最大値が増える!
例
| 型 | 通常の最大値 | unsigned の最大値 |
|---|---|---|
| char | 127 | 255 |
| int | 約21億 | 約42億 |
マイナスが不要な場面(配列の添字、個数など)では unsigned 系を使うことがあります😊
💥 ここが重要!オーバーフローとは?
整数型には必ず
「入れられる範囲」 が決まっています。
この範囲を超えた値を代入しようとすると……
🧨 オーバーフロー(overflow) が発生します!
しかも、C言語ではここが超危険ポイント ⚠️
オーバーフローしてもエラーは出ず、
壊れた値になり、そのまま実行が続いてしまう ことがあるのです。
💻 サンプルコード
char 型の最大値である 127 を超える値を代入してみます。
プロジェクト名:2-4-1 ソースファイル名: sample2-4-1.c
#include <stdio.h>
int main(void)
{
char value = 150; // char に入らない値を代入
printf("value の中身は %d です\n", value);
return 0;
}📝 printf の書式と理由
ここでは
printf("value の中身は %d です\n", value);を使っています。
- %d は 「数値(整数)」として表示するフォーマット指定子
- char 型でも、整数として解釈して表示できる
- \n は改行
printf は画面に数値や文字を表示する命令で、C 言語の基本中の基本です✨
🌀 column:オーバーフローが輪のようにつながる?
オーバーフローの結果は
「めちゃくちゃな値に勝手に変わる」のではなく、
内部的には次のように循環している場合があります。
🔄 値の循環イメージ(char の例)
127 → オーバーすると → -128 → -127 → ... → 0 → 1 → ...
つまり、上限を超えた分だけ下限側から進む「輪」のようになっているわけです。
ただし重要ポイント ⚠️
C言語ではオーバーフローの挙動は “未定義"
たまたま循環しているように見えるだけで、
実際には壊れた値になることもあります。
だからオーバーフローを利用するプログラムは絶対に書かないようにしましょう😣
📊オーバーフローのイメージ
(正の最大値)
127
↑
|
0 → 100 → 127 → -128 → -100 → -56 → …
|
↓
(負の最小値)こうした「つながり」を理解しておくと、
なぜ不思議な値が出てくるのかが見えてきます👀✨
📘 まとめ:整数型の安全な使い方
| 注意点 | 説明 |
|---|---|
| 基本は int を使う | char や short は特殊用途 |
| 大きな値は桁区切りを使う | 121'000'000 のように読みやすく |
| オーバーフローは危険 | 結果が壊れる&エラーにならない |
| unsigned 型はマイナス不要な場合に便利 | ただし使いすぎに注意 |
| 型のサイズは環境で異なることも | sizeof で確認できる |
