変数の型
C 言語における変数は値を保管するための場所という役割がありますが、変数にはどんな値でも自由に保管できるわけではなく、変数を宣言するときにどのような値を格納するのかあらかじめ格納する値の型を決めておく必要があります。ここでは C 言語における変数の型について解説します。
(Last modified: )
変数の型の種類
変数で指定できるデータの型には次のようなものがあります。
種類 | 型名 | サイズ | 値の範囲 |
---|---|---|---|
文字型 | char | 1バイト | -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 char | 1バイト | 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 )
著者> TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。