C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++のintとlongの違いとは?サイズ・範囲・使い分けを徹底解説

はじめに

C++には整数を扱うためのデータ型が複数用意されており、その中でも特によく使われるのが「int」と「long」です。どちらも整数値を格納できますが、メモリサイズや扱える数値の範囲が異なります。本記事では、それぞれの特徴と具体的なコード例、そして両者の違いについてわかりやすく解説します。

int型とは

int型は整数値を格納するための基本的なデータ型です。符号付き(signed)と符号なし(unsigned)の両方があり、一般的な環境では32ビット(4バイト)です。long型と比べて必要なメモリ領域が小さく、日常的な整数処理で最も広く使われています。変数を宣言する際はキーワード「int」を使用します。

int型の宣言構文は以下の通りです。

int 変数名;

ここで、「変数名」にはユーザーが任意に付けた名前が入ります。

サンプルコード

#include <iostream>
using namespace std;
int main() {
    int a = 8;
    int b = 10;
    int c = a + b;
    cout << "The value of c : " << c;
    return 0;
}

実行結果

The value of c : 18

long型とは

long型は、より大きな範囲の整数値を格納するためのデータ型です。こちらも符号付き・符号なしの両方が利用でき、多くの環境では64ビット(8バイト)です。int型よりも多くのメモリ領域を必要としますが、その分、非常に大きな数値を扱うことができます。変数の宣言にはキーワード「long」を使用します。

long型の宣言構文は以下の通りです。

long 変数名;

サンプルコード

#include <iostream>
using namespace std;
int main() {
    int a = 8;
    long b = 28;
    long c = long(a + b);
    cout << "The value of c : " << c;
    return 0;
}

実行結果

The value of c : 36

intとlongの主な違い

項目intlong
サイズ32ビット(4バイト)64ビット(8バイト)
扱える範囲(符号付き)-2,147,483,648 ~ 2,147,483,647-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
メモリ使用量少ない多い
主な用途一般的な整数計算非常に大きな数値の処理

注意点:環境によるサイズの違い

実際のサイズは処理系(OSやコンパイラ)によって異なる場合があります。たとえばLinuxやmacOSではlongが64ビットですが、Windowsではlongが32ビットとして定義されている点に注意が必要です。特定のサイズを保証したい場合は、<cstdint>ヘッダーのint32_tやint64_tといった固定幅整数型を使用するのが安全です。

まとめ

intとlongはどちらも整数を扱うデータ型ですが、longはより大きな数値を格納できる一方で、メモリを多く消費します。通常の計算にはintを、intの範囲(約21億)を超える可能性がある値にはlongを選ぶとよいでしょう。用途に応じて適切な型を使い分けることで、効率的かつ安全なプログラムを作成できます。

  1. 【C/C++】const int*、const int* const、int const* の違いをわかりやすく解説

    C言語やC++では、ポインタとconst修飾子の組み合わせ方によって、複数の異なる変数宣言が存在します。「const int*」「const int* const」「int const*」など、一見よく似たこれらの宣言の違いを正確に理解することは、安全でバグの少ないコードを書くうえで非常に重要です。本記事では、これら3つの宣言の違いを、複雑な宣言を読み解く際に役立つ「時計回り/らせんルール(Clockwise/Spiral Rule)」にも触れながら、コード例とともに分かりやすく解説します。時計回り/らせんルールとは宣言の中心にある識別子から出発し、時計回りに記号をなぞっていくことで、cons

  2. C#のintとInt32の違いとは?エイリアスの仕組みと使い分けを解説

    C#では、32ビット整数を扱う方法として「int」と「Int32」の2つの記述があります。一見すると別々の型のように見えますが、実は本質的な違いはほとんどありません。intとInt32の基本的な関係Int32は.NETフレームワークが提供する構造体(System.Int32)であり、intはC#言語においてInt32に付けられたエイリアス(別名)です。Int32 x = 5;int x = 5;上記の2つの宣言は、どちらも同じ32ビット整数を保持します。コンパイルされた結果は完全に同一のコードになるため、実行時のパフォーマンスや動作に一切の違いはありません。唯一の小さな違いわずかな違いとして、