[C言語入門]変数が保持できる値の範囲について

変数の宣言

今回のサンプルでは、”int result”ということで、整数型の変数resultを定義しました。
変数として宣言できるのは,int以外にも以下のデータ型があります。

char     主に文字を格納するのに使用
int      主に整数を格納するのに使用
float    主に大きくない実数値を格納するのに使用
double   主に大きな実数値を格納するのに使用



また、intに関してはshort,longの接頭語を付けることもできます。
(コンパイラによっては、long double型の宣言も可能です)

short int
long int
long long int



上記の場合intは省略可能なので、以下の書き方をする事もできます。

short
long
long long




さらに、これらの型の接頭語にunsignedを付けることもできます。

unsigned char
unsigned int




このようにたくさんのデータ型を宣言することができます。これらの違いは格納できるデータの範囲が異なる事です。
以下の値は、一般的な場合における保持可能な値の範囲です。

char                    -128~127
unsigned char           0~255
 
short                   -32768~32767
unsigned short          0~65535
 
int                     約-21億~約21億
unsigned int            0~約42億
 
long int                約-21億~約21億
unsigned long int       0~約42億
 
float                   1.18*10の-38乗~1.18*10の-38乗(有効数値7桁)
 
double                  2.23*10の-308乗~1.79*10の-308乗(有効数値15桁)




取りえる範囲をプログラムで確認する


上記の値は厳密には、使用しているコンパイラによって変わってきます。
具体的な制限値を知りたい場合は、以下のプログラムで確認することができます。

#include <stdio.h>
#include <limits.h>
 
main( void )
{
    printf( "char              の範囲 %d~%d\n", CHAR_MIN, CHAR_MAX );
    printf( "unsigned char     の範囲 0~%u\n",  UCHAR_MAX );
    printf( "int               の範囲 %d~%d\n", INT_MIN, INT_MAX );
    printf( "unsigned int      の範囲 0~%u\n",  UINT_MAX );
    printf( "long int          の範囲 %ld~%ld\n", LONG_MIN, LONG_MAX );
    printf( "unsigned long int の範囲 0~%lu\n",  ULONG_MAX );
}



これを手元の環境(windows7,cygwin)で実行すると、以下の結果となりました。

$ gcc limit.c -o limit; ./limit
char              の範囲 -128~127
unsigned char     の範囲 0~255
int               の範囲 -2147483648~2147483647
unsigned int      の範囲 0~4294967295
long int          の範囲 -2147483648~2147483647
unsigned long int の範囲 0~4294967295

関連記事

コメントを残す

メールアドレスが公開されることはありません。