
C言語基礎|整数型と文字型
C言語で「整数」を扱うとき、いちばん大事なのは どのくらいの範囲の数を、どういうルールで表すか を自分で選べることです。
その選択肢が、文字型(char 系)を含む整数型 なんですね。
- 負の数も扱うなら 符号付き(signed)
- 0以上だけでいいなら 符号無し(unsigned)
- さらに「表現できる範囲」を広げたいなら short / int / long / long long を使い分ける
ここから先は、型の名前が増えてちょっとワチャっとしますが、表で整理するとスッキリ理解できますよ。

「有限範囲の連続した整数」ってどういう意味?
整数型は、ざっくり言うと ある範囲の整数が、連続して並んでいる 型です。
たとえば「10個の連続した整数」が必要だとします。
連続した整数の例
符号付きの例(負もOK)
-5 -4 -3 -2 -1 0 1 2 3 4
符号無しの例(0以上だけ)
0 1 2 3 4 5 6 7 8 9
この2つの違いが、そのまま signed と unsigned の違いになります。
signed と unsigned の違い(まずはここ!)
符号付き整数型と符号無し整数型
| 種類 | 表せる値 | ざっくりイメージ | 使いどころ |
|---|---|---|---|
| signed(符号付き) | 負 / 0 / 正 | 真ん中に0がある | 温度差、増減、誤差、位置、計算結果 |
| unsigned(符号無し) | 0 / 正 | 0から始まる | 個数、サイズ、インデックス、ビット操作 |
ポイントは「unsigned は負がない分、同じビット数なら正の範囲が広い」ってことです。
宣言で決まる:signed / unsigned の基本ルール
型を決めるのは 宣言 です。ここで signed / unsigned を付けるだけ。
宣言例と意味
| 宣言 | その変数の型 | 意味 |
|---|---|---|
| int x; | signed int | ふつうは符号付き扱い |
| signed int y; | signed int | 明示的に符号付き |
| unsigned int z; | unsigned int | 0以上のみ |
※ int 系(short / int / long / long long)は、何も付けなければ signed 扱いが基本です(char は例外があるので後で丁寧にやります)。
整数型は「大きさ」でも選べる
整数型には「表現できる範囲」を変えるための段階があります。
整数型の“高さ”イメージ

ここでいう「低い・高い」は 表現できる範囲(だいたいサイズ) の感覚です。
整数型の分類を一気に整理
整数型の分類(char 系+int 系)
| グループ | 代表 | 例 |
|---|---|---|
| 符号付き整数型 | signed 系 | signed char / short / int / long / long long |
| 文字型 | char 系 | char |
| 符号無し整数型 | unsigned 系 | unsigned char / unsigned short / unsigned int / unsigned long / unsigned long long |
ここで注意が1つあります。
char は signed 扱いと決め打ちできない環境があるので、文字として使うか数として使うかで、書き方を使い分けるのが安全です。
型名は省略できる(でも規則がある)
型名は長いので、省略できるルールが用意されています。これを知らないと「short って何?」ってなります。
省略のルール(重要)
| 書き方 | 実際の意味 |
|---|---|
| short | short int |
| long | long int |
| long long | long long int |
| unsigned | unsigned int |
| signed | signed int |
| int 系で signed/unsigned を省略 | 基本は signed 扱い |
型名の一覧(短縮名までまとめて整理)
ユーザー文書の Table 7-2 に相当する内容を、読みやすく表に再構成します。
整数型(文字型・int系型)の名称と短縮名
| 種類 | フルネーム例 | 省略できる表記(同じ型) |
|---|---|---|
| 文字型 | signed char | signed char |
| 文字型 | unsigned char | unsigned char |
| 文字型 | char | char |
| int系 | signed short int | signed short / short int / short |
| int系 | signed int | signed / int |
| int系 | signed long int | signed long / long int / long |
| int系 | signed long long int | signed long long / long long int / long long |
| int系 | unsigned short int | unsigned short |
| int系 | unsigned int | unsigned |
| int系 | unsigned long int | unsigned long |
| int系 | unsigned long long int | unsigned long long |
「右端が最短表記」という考え方で、普段は short / long / unsigned みたいに短く書くことが多いです。
サンプルプログラム
同じ数値を signed と unsigned で表示したり、char を文字と数として見せるプログラムを例に解説をします。
プロジェクト名:chap7-5-1 ソースファイル名:chap7-5-1.c
Visual Studio でこのプログラムを実行するには、SDLチェック設定を変更しておく必要があります。
1.プロジェクト名を右クリックして、「プロパティ」をクリックします。
2.「C/C++」→「全般」→「SDLチェック」を「いいえ」に切り替えて「OK」をクリックします。
// 整数型と文字型の見え方を確認するサンプル
#include <stdio.h>
int main(void)
{
signed int si = -10;
unsigned int ui = 10;
char ch = 'A';
signed char sc = -5;
unsigned char uc = 250;
puts("整数型と文字型の表示をチェックします。");
printf("signed int si = %d\n", si);
printf("unsigned int ui = %u\n", ui);
puts("char は文字としても、数としても見せられます。");
printf("char ch = %c (文字) / %d (数)\n", ch, ch);
puts("signed char / unsigned char も整数として扱えます。");
printf("signed char sc = %d\n", sc);
printf("unsigned char uc = %u\n", uc);
return 0;
}登場する命令の書式と「何をするか」
puts
- 書式:puts(文字列);
- 何をする:文字列を表示して改行する(案内文に向く)
printf
- 書式:printf(書式文字列, 値, ...);
- 何をする:書式に合わせて表示する
書式指定子(今回よく使う)
| 指定子 | 意味 | 例 |
|---|---|---|
| %d | 符号付き整数として表示 | signed int, short, signed char など |
| %u | 符号無し整数として表示 | unsigned int, unsigned char など |
| %c | 文字として表示 | char |
※ char を %d で出すと「文字コードの数値」が見えます。これ、学習にすごく便利です。
同じ中身でも“見せ方”で意味が変わる
| 値の正体 | 表示方法 | 見え方 |
|---|---|---|
| char ch = 'A' | %c | A |
| char ch = 'A' | %d | 65(Aの文字コード) |
| unsigned char uc = 250 | %u | 250 |
| signed char sc = -5 | %d | -5 |
char は「文字」でも「小さい整数」でもある
char
├─ 文字として使う(%c)
└─ 数として使う(%d)