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

C++のsizeof演算子とは?基本構文と使い方を実例付きで解説

sizeof はC++のキーワードであると同時に、コンパイル時に評価される演算子でもあります。変数やデータ型が必要とするメモリのサイズをバイト単位で取得するために使用され、プログラムの実行時ではなくコンパイルの時点でその値が確定する点が特徴です。

sizeof演算子は、intdouble などの組み込み型だけでなく、クラス・構造体・共用体などユーザー定義のデータ型に対しても使用できます。

sizeofの基本構文

sizeof (data type)

「data type」の部分には、サイズを調べたいデータ型や変数名を指定します。例えば、char 型のオブジェクトに適用した場合は必ず 1 を返します。これは、C++において char のサイズが常に1バイトとして定義されているためです。

また、配列に適用した場合には注意が必要です。このとき返されるのは、配列識別子が指すポインタのサイズではなく、配列全体の合計バイト数です。たとえば要素10個の int 配列(1要素4バイト)であれば、40という値が得られます。

サンプルコード:組み込み型のサイズ一覧を出力する

次の例では、代表的な組み込み型のサイズを sizeof 演算子を使って順番に出力しています。

#include <iostream>
using namespace std;

int main() {
    cout << "Size of char : " << sizeof(char) << endl;
    cout << "Size of int : " << sizeof(int) << endl;
    cout << "Size of short int : " << sizeof(short int) << endl;
    cout << "Size of long int : " << sizeof(long int) << endl;
    cout << "Size of float : " << sizeof(float) << endl;
    cout << "Size of double : " << sizeof(double) << endl;
    cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
    return 0;
}

実行結果

上記のコードをコンパイルして実行すると、次のような出力が得られます。

Size of char : 1
Size of int : 4
Size of short int : 2
Size of long int : 4
Size of float : 4
Size of double : 8
Size of wchar_t : 4

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

上記の出力は一般的な32ビット/64ビット環境での例ですが、実際の各型のサイズは処理系(コンパイラやプラットフォーム)によって異なる場合があります。たとえば long 型はWindowsでは4バイト、多くのLinux環境では8バイトになることがあります。

そのため、特定のバイト数を前提としたコードを書く場合は、固定値を決め打ちせずに sizeof を使って動的にサイズを取得することが推奨されます。これにより、移植性の高い安全なプログラムを作成できます。

  1. C++の三項演算子(条件演算子 ? :)とは?基本の仕組みと使い方を解説

    三項演算子(条件演算子 ? :)とは C++における条件演算子(? :)は、3つのオペランド(被演算子)を受け取ることから「三項演算子」と呼ばれています。簡単な条件分岐をif文を使わずに1行で記述できるため、コードを簡潔にしたい場面でよく使われる演算子です。 条件演算子の動作の流れ 条件演算子は次のような手順で動作します。 第1オペランドは暗黙的にbool型へ変換されます。評価が行われ、すべての副作用が完了してから処理が続行されます。 第1オペランドがtrue(1)と評価された場合、第2オペランドが評価されます。 第1オペランドがfalse(0)と評価された場合、第3オペランドが評価されま

  2. C#のsizeof演算子とは?データ型のサイズを取得する方法

    C#のsizeof()演算子は、指定したデータ型が占めるサイズ(バイト数)を返します。組み込みの値型に対して使用でき、メモリ管理やパフォーマンスの最適化を行う際に役立ちます。例えば、int型のサイズを調べたい場合は次のように記述します。sizeof(int);double型の場合は以下のとおりです。sizeof(double);サンプルコードそれでは、さまざまなデータ型のサイズを実際に確認できる完全な例を見てみましょう。using System; namespace Demo { class Program { static void Main(string[]