04_C言語の変数とデータ型(応用)

学習目標

この章では、変数の種類や取り扱いの詳細について学びます。特に、変数の型の違いや、数値の範囲、signed・unsigned、long型の違いに注目します。


04-1 変数の初期化と再代入

変数は、宣言と同時に値を入れることができます。これを初期化といいます。

int x = 5;    // 初期化
x = 10;       // 再代入(値の上書き)

04-2 整数型の種類と比較一覧

整数型にはさまざまなバリエーションがあります。それぞれに特徴があり、用途によって使い分けます。

データ型 (整数型のみ)

型名 説明 符号 表現できる範囲(代表例) サイズ(バイト) 備考
(signed) int 符号付き整数 ± -2,147,483,648 ~ 2,147,483,647 4 標準的な整数型(省略可)
unsigned int 符号なし整数 +のみ 0 ~ 4,294,967,295 4 int より広い正の範囲
(signed) short 小さめの整数(符号付き) ± -32,768 ~ 32,767 2 省メモリ時に使用
unsigned short 小さめの正の整数 +のみ 0 ~ 65,535 2 正数のみ、範囲広め
(signed) long 大きめの整数(符号付き) ± 約 -9京 ~ 9京 8(環境依存) 大きな整数用
unsigned long 大きめの正の整数 +のみ 0 ~ 約18京 8(環境依存) さらに広い範囲
(signed) char 符号付き1バイト文字 ± -128 ~ 127 1 ASCII文字や小さな数値に
unsigned char 符号なし文字型 +のみ 0 ~ 255 1 バイト操作に便利

カッコ内の signed は省略可能です。 int 型はコンパイラが最も効率よく扱えるサイズ。特別な理由がなければ int を使うのが望ましい。


04-3 signedとunsignedの違い

整数型には「符号付き(signed)」と「符号なし(unsigned)」があります。

signed int a = -10;     // 負の数もOK(通常はこちらが使われる)
unsigned int b = 10;    // 正の数だけ

signed は省略可能で、int と書けば signed int と同じ意味になります。


04-4 数値の範囲(図解)

以下は、代表的な整数型の範囲を数直線で表したイメージです。

int:                               |------------|-------------|
                             -2,147,483,648     0         2,147,483,647

unsigned int:                                   |-----------------------|
                                                0                      4,294,967,295

long:    |-----------------略-------------------|--------------------------略-----------------|
         -9,223,372,036,854,775,808             0                                 9,223,372,036,854,775,807

04-5 型の使い分け


04-6 理解度チェック

Q1. int 型と unsigned int 型の違いとして正しいものはどれか。

ア. unsigned int は文字列しか使えない
イ. int は整数だが unsigned int は実数になる
ウ. unsigned int は正の整数しか使えない
エ. int は範囲が狭くて使えない

解説を表示 正解:ウ
unsigned int は負の数を扱えず、0以上の整数だけを表現できます。


Q2. 次のコードで、変数 b に入る値として正しいものはどれか。

int a = -10;
unsigned int b = a;

ア. -10
イ. 10
ウ. 不定(エラー)
エ. 非常に大きな整数

解説を表示 正解:エ
負の値を unsigned に代入すると、2の補数として非常に大きな正の整数に変換されます。


Q3. 次のうち、省略可能なキーワードはどれか。

ア. int
イ. char
ウ. signed
エ. long

解説を表示 正解:ウ
signed は明示してもよいですが、通常は int とだけ書いて省略されます。


Q4. long 型が適している場面として最もふさわしいものはどれか。

ア. 数値が0〜100の範囲に収まる場合
イ. 計算速度を最優先する場合
ウ. 小数点を扱いたい場合
エ. 非常に大きな整数を扱う必要がある場合

解説を表示 正解:エ
longint より広い範囲の整数を扱うため、大きな数値が必要な場面に適しています。


04-7 まとめ