変数の型

C 言語における変数は値を保管するための場所という役割がありますが、変数にはどんな値でも自由に保管できるわけではなく、変数を宣言するときにどのような値を格納するのかあらかじめ格納する値の型を決めておく必要があります。ここでは C 言語における変数の型について解説します。

(Last modified: )

変数の型の種類

変数で指定できるデータの型には次のようなものがあります。

種類型名サイズ値の範囲
文字型char1バイト-128 ~ 127
整数型short int
int
long int
2バイト
4バイト
4バイト
-32768 ~ 32767
-2147483648 ~ 2147483647
-2147483648 ~ 2147483647
浮動小数点型float
double
long double
4バイト
8バイト
8バイト
3.4E-38 ~ 3.4E+38
1.7E-308 ~ 1.7E+308
1.7E-308 ~ 1.7E+308

型ごとに割り当てられるサイズが異なり、サイズに応じて型に格納可能な値の範囲が設定されます。例えば char 型の場合は 1 バイトですので char 型の変数には -128 ~ 128 の値しか格納できません。それに対して int 型の場合は 4 バイトですので int 型の変数には -2147483648 ~ 2147483647 の値が格納できます。

char 型は整数型の 1 バイトの型ですが、アルファベット 1 文字を格納するのに適した型のため文字型と呼ばれています。また short int 型は short 、 long int 型は long と記述しても構いません。

なお、型に対してどれだけのサイズを割り当て、結果としてどれだけの値を格納できるのかについては厳密に規定はされておらずコンパイラなど開発環境によって異なる場合があります。上記はあくまで目安とお考え下さい。

unsigned修飾子

型によってサイズが決まり、サイズに応じて格納できる値の大きさが決まってきます。特に指定しない場合は格納できる値として負の値も格納できるようになっていますが、負の値を使わないことが分かっている場合にはその分を正の値を格納するために使うことができます。

このように負の値を使わない場合にはデータ型の前に unsigned を付けます。それに対して正も負も扱う場合には signed を付けることになっていますがどちらも指定しなかった場合は signed がデフォルトとなっているため通常は省略します。

種類型名サイズ値の範囲
文字型unsigned char1バイト0 ~ 255
整数型unsigned short int
unsigned int
unsigned long int
2バイト
4バイト
4バイト
0 ~ 65535
0 ~ 4294967295
0 ~ 4294967295

正の数だけ使うことが分かっている場合は、同じサイズの型でより大きい値を格納することが出来るようになります。

型のサイズを確認する

先ほど記載した通り、型に対して何サイズを割り当てるのかは C 言語では規定されていないため開発環境毎に異なる可能性があります。ご自分の開発環境で型に対するサイズを確認するには sizeof(型名) で調べることが可能です。

簡単なプログラムで型に対するサイズを確認してみます。(単に確認を行ってみるだけですので、プログラムの内容について理解できなくても構いません。結果だけを見てください)。

#include <stdio.h>

int main(void){
  printf("char : %d\n", sizeof(char));
  printf("short int : %d\n", sizeof(short int));
  printf("int : %d\n", sizeof(int));
  printf("long int : %d\n", sizeof(long int));
  printf("float : %d\n", sizeof(float));
  printf("double : %d\n", sizeof(double));
  printf("long double : %d\n", sizeof(long double));

  return 0;
}

上記を「test2-1.c」の名前で保存します。まずコンパイルを行います。

データ型

コンパイルが終わりましたら「test2-1」と入力して実行します。

データ型

「Borland C++ Compiler 5.5」の環境では「long double」型は10バイトが割り当てられているようです。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。