【C言語入門】整数(int、long int、short int)の使い方

int型って使ってますか?

整数を扱う場合に使いますよね。整数を扱うデータ型にはよく使うint型の他にもlong int型、short int<型があります。扱う値の範囲でこれらの型を使い分けます。

この記事では、

  • int型について
  • long int型について
  • short int型について


などそれぞれの型の詳しい内容について解説していきます。今回はint型について、使い方をわかりやすく解説します!

目次

int型について

int型は整数を扱うデータ型です。int型の変数は次のように定義します。

int型の変数および初期化:

int 変数名 = 整数値;

int型のサイズは4バイトで、最大値は2147483647、最小値は-2147483648となります。printf関数などを使って出力表示する際の変換指定子はdになります。

int型にはマイナスの値をとらないunsigned int型もあります。unsigned int型の変数は次のように定義します。

unsigned int型の変数および初期化:

unsigned int 変数名 = 0以上の整数値;

unsigned int型のサイズも4バイトで、最大値は4294967295、最小値は0となります。printf関数などを使って出力表示する際の変換指定子は「u」になります。

それではサンプルコードで確認していきましょう。なお、int型の値の範囲を確認するために、ヘッダーファイル「limits.h」をインクルードしています。

#include <stdio.h>
#include <limits.h>
 
int main(void) {
    int num = 1;
    // int型の変換指定子はd
    printf("int型変数numの値: %d\n", num);
    
    // int型での割り算
    double div1 = num / 2;
    double div2 = num / (double)2; // キャストして割り算
    printf("%d / 2 は: %lf\n", num, div1);
    printf("%d / 2 は: %lf\n", num, div2);
 
    // int型、unsigned int型のサイズおよび最小値、最大値    
    printf("int型のバイト数は%ldバイト\n", sizeof(num));
    printf("int型の数値の最小値: %d\n", INT_MIN);  
    printf("int型の数値の最大値: %d\n", INT_MAX);
    printf("unsigned int型の数値の最小値: %d\n", 0);  
    printf("unsigned int型の数値の最大値: %u\n", UINT_MAX);
 
    return 0;
}

実行結果:

int型変数numの値: 1
1 / 2 は: 0.000000
1 / 2 は: 0.500000
int型のバイト数は4バイト
int型の数値の最小値: -2147483648
int型の数値の最大値: 2147483647
unsigned int型の数値の最小値: 0
unsigned int型の数値の最大値: 4294967295

このサンプルコードではint型の変数numを定義し、変換指定子dを使って出力表示しています。

なお、int型の変数を使って割り算を行う場合は注意が必要です。このコードのように割り算の分母にint型の変数を使うと計算結果はint型となります。

浮動小数点数型の計算結果を得る必要がある場合は分母のint型の変数をdouble型もしくはfloat型にキャストする必要があります。

また、ヘッダーファイルlimits.hで定義された定数INT_MIN、INT_MAX、UINT_MAXを使ってint型およびunsigned int型の数値の最小値、最大値を出力表示しています。

long int型について

long int型も整数を扱うデータ型です。int型に比べて使用するバイト数が8バイトと大きくなります。long int型の変数は次のように定義します。

long int型の変数および初期化:

long int 変数名 = 整数値;

また次のようにintを省略することもできます。

long 変数名 = 整数値;

long int型のサイズは8バイトで、最大値は9223372036854775807、最小値は-9223372036854775808となります。printf関数などを使って出力表示する際の変換指定子はldになります。

long int型にもマイナスの値をとらないunsigned long int型があります。unsigned long int型の変数は次のように定義します。

unsigned long int型の変数および初期化:

unsigned long int 変数名 = 0以上の整数値;

unsigned long int型のサイズも8バイトで、最大値は18446744073709551615、最小値は0となります。printf関数などを使って出力表示する際の変換指定子はluになります。

それではサンプルコードで確認していきましょう。

#include <stdio.h>
#include <limits.h>
 
int main(void) {
    long int num = 1;
    // long int型の変換指定子はld
    printf("long int型変数numの値: %ld\n", num);
 
    // long int型のサイズおよび最小値、最大値    
    printf("long int型のバイト数は%ldバイト\n", sizeof(num));
    printf("long int型の数値の最小値: %ld\n", LONG_MIN);  
    printf("long int型の数値の最大値: %ld\n", LONG_MAX);
    printf("unsigned long int型の数値の最小値: %d\n", 0);  
    printf("unsigned long int型の数値の最大値: %lu\n", ULONG_MAX);
 
    return 0;
}

実行結果:

long int型変数numの値: 1
long int型のバイト数は8バイト
long int型の数値の最小値: -9223372036854775808
long int型の数値の最大値: 9223372036854775807
unsigned long int型の数値の最小値: 0
unsigned long int型の数値の最大値: 18446744073709551615

このサンプルコードではlong int型の変数「num」を定義し、変換指定子「ld」を使って出力表示しています。

また、ヘッダーファイルlimits.hで定義された定数LONG_MIN、LONG_MAX、ULONG_MAXを使ってlong int型およびunsigned long int型の数値の最小値、最大値を出力表示しています。

short int型について

short int型も整数を扱うデータ型です。int型に比べて使用するバイト数が2バイトと小さくなります。short int型の変数は次のように定義します。

short int型の変数および初期化:

short int 変数名 = 整数値;

また次のようにintを省略することもできます。

short 変数名 = 整数値;

short int型のサイズは2バイトで、最大値は32767、最小値は-32768となります。printf関数などを使って出力表示する際の変換指定子はdになります。

short int型にもマイナスの値をとらないunsigned short int型があります。unsigned short int型の変数は次のように定義します。

unsigned short int型の変数および初期化:

unsigned short int 変数名 = 0以上の整数値;

unsigned short int型のサイズも2バイトで、最大値は65535、最小値は0となります。printf関数などを使って出力表示する際の変換指定子はuになります。

それではサンプルコードで確認していきましょう。

#include <stdio.h>
#include <limits.h>
 
int main(void) {
    short int num = 1;
    // short int型の変換指定子はd
    printf("short int型変数numの値: %d\n", num);
 
    // short int型のサイズおよび最小値、最大値    
    printf("short int型のバイト数は%ldバイト\n", sizeof(num));
    printf("short int型の数値の最小値: %d\n", SHRT_MIN);  
    printf("short int型の数値の最大値: %d\n", SHRT_MAX);
    printf("unsigned short int型の数値の最小値: %d\n", 0);  
    printf("unsigned short int型の数値の最大値: %u\n", USHRT_MAX);
 
    return 0;
}

実行結果:

short int型変数numの値: 1
short int型のバイト数は2バイト
short int型の数値の最小値: -32768
short int型の数値の最大値: 32767
unsigned short int型の数値の最小値: 0
unsigned short int型の数値の最大値: 65535

このサンプルコードではshort int型の変数numを定義し、変換指定子dを使って出力表示しています。

また、ヘッダーファイルlimits.hで定義された定数SHRT_MIN、SHRT_MAX、USHRT_MAXを使ってshort int型およびunsigned short int型の数値の最小値、最大値を出力表示しています。

まとめ

ここでは、int型について説明しました。

int型、long int型、short int型で扱う値の範囲が異なります。範囲を超えて意図しない値で扱われることのないように注意しましょう。

使いこなすことができるように、この記事を何度も参考にして下さいね!

この記事を書いた人

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
info@sss-lab.com

目次