C言語の変数の型

記事内に広告が含まれています。

C言語では変数を確保する際に「型」を指定する必要があります。

C言語の型

C言語での定義されている型の種類

C言語では変数を確保する際に「型」を指定する必要があります。

定義されている型は以下のものです。

  • char
  • short
  • int
  • long
  • double
  • float

です。

それぞれコンパイラに対して特定のバイト数のエリア確保を命令します。

C言語での定義されている型の利用

具体的には以下のソースのように「変数の型 変数の名前;」というように宣言します。

#include    <stdio.h>
#include    <stdlib.h>
int    main()
{
    char   c ;
    short  s ;
    int    i ;
    long   l ;
    double d ;
    float  f ;

    return EXIT_SUCCESS ;
}

C言語での定義されている型のサイズ

C言語で利用できる変数の型のサイズは以下の通りです。

#include    <stdio.h>
#include    <stdlib.h>
int    main()
{
    char   c ;
    short  s ;
    int    i ;
    long   l ;
    double d ;
    float  f ;

    printf( "char   size is %dバイトn" , sizeof( char )) ;
    printf( "short  size is %dバイトn" , sizeof( short )) ;
    printf( "int    size is %dバイトn" , sizeof( int )) ;
    printf( "long   size is %dバイトn" , sizeof( long )) ;
    printf( "double size is %dバイトn" , sizeof( double )) ;
    printf( "float  size is %dバイトn" , sizeof( float )) ;

    return EXIT_SUCCESS ;
}

上記ソースの実行結果は

    char   size is 1バイト
    short  size is 2バイト
    int    size is 4バイト
    long   size is 4バイト
    double size is 8バイト
    float  size is 4バイト

というようになります。

char,short,int,longは整数を、double,floatは小数を管理する場合に使用します。

C言語でのint型のサイズ

intのサイズは処理系(コンパイラ・OS)に依存してサイズが変わるので注意が必要です。

「intはMS-DOSは2バイト、UNIXは4バイト」と教えられましたが実際は処理系に依存が正しいようです。

C言語での型の関係

それぞれのバイト数の関係は
char ≦ short ≦ int ≦ long
と決められています。

C言語での符号有無

変数に格納する値を「+」のみに限定する場合は「unsigned」を付けて宣言します。
(これを一般に「符号なし」と言います。)

例えば

    unsigned char c ;
    unsigned int  i ;

というようになります。

「unsigned」を付けた変数は最上位ビットを数字として使用しますが、「unsigned」がついていない変数は最上位ビットを符号(0がプラス、1がマイナス)を
表現します。
(マイナス値は2補数で表現します。)

char型は1バイトなので、2進数(ビット)で表現すると「0000 0000」から「1111 1111」までを表現できますが、「signed(unsignedの逆でsignedは省略可能です)」の場合は最上位ビットが符号なので(マイナスは2の補数で表現すると)最大値が「0111 1111」、最小値が「1111 1111」、「unsigned」場合は
最大値が「1111 1111」、最小値が「0000 0000」になりそれぞれsignedが「-128~127」、unsignedが「0~255」までを表現できます。

まとめ

種類 型名 サイズ 値の範囲
文字型

char 1バイト -128 ~ 127
文字型

unsigned char 1バイト 0 ~ 255
整数型

short int 2バイト -32768 ~ 32767
整数型

unsigned short int 2バイト 0 ~ 65535
整数型

int 4バイト -2147483648 ~ 2147483647
整数型

unsigned int 4バイト 0 ~ 4294967295
整数型

long 4バイト 0 ~ 4294967295
整数型

unsigned long 4バイト 0 ~ 4294967295
浮動小数点型

float 4バイト 3.4E-38 ~ 3.4E+385
浮動小数点型

double 8バイト 1.7E-308 ~ 1.7E+308
浮動小数点型

long double 8バイト 1.7E-308 ~ 1.7E+308

になります。

タイトルとURLをコピーしました