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

C++を使用したsizeof演算子の結果


Sizeof演算子は、通過するデータ構造またはデータ型のサイズを計算するために使用されるC言語で最もよく使用される演算子の1つです。 sizeof演算子は符号なし整数型を返し、この演算子はプリミティブおよび複合データ型に適用できます。 sizeof演算子を直接データ型に使用して、それが消費しているメモリを知ることができます-

#include <bits/stdc++.h>
using namespace std;

int main() {
   cout << sizeof(int) << "\n";
   cout << sizeof(char) << "\n";
   cout << sizeof(float) << "\n";
   cout << sizeof(long) << "\n";
   return 0;
}

出力

4
1
4
8
8

この機能を使用することで、このデータ型の変数が占めるスペースを知ることができます。 16_bitコンパイラは32_bitコンパイラとは異なる値をintに与えるため、出力もコンパイラに依存します。

この操作を式に適用することもできます-

#include <bits/stdc++.h>
using namespace std;

int main() {
   cout << sizeof(int) << "\n";
   cout << sizeof(char) << "\n";
   cout << sizeof(float) << "\n";
   cout << sizeof(double) << "\n";
   cout << sizeof(long) << "\n";
   return 0;
}

出力

4
4

ご覧のとおり、xの以前の値は4であり、プレフィックス操作の後でも、たまたま同じままです。これはすべて、演算子のサイズが原因です。この演算子はコンパイル時に使用されるため、適用した式の値は変更されません。

演算子のsizeの必要性

sizeof演算子にはさまざまな用途があります。それでも、これは主に、配列、構造体、共用体などの複合データ型のサイズを決定するために使用されます。

#include <bits/stdc++.h>

using namespace std;

int main() {
   int arr[] = {1, 2, 3, 4, 5}; // the given array

   int size = sizeof(arr) / sizeof(int); // calculating the size of array

   cout << size << "\n"; // outputting the size of given array
}

出力

5

ここでは、最初に、アレイ全体のサイズを計算するか、アレイが使用しているメモリを計算します。次に、その数値をデータ型のsizeofで除算します。このプログラムでは、intです。

この演算子の2番目に重要な使用例は動的メモリの割り当てであるため、スペースを割り当てるときにsizeof演算子を使用します。

#include <bits/stdc++.h>

using namespace std;

int main() {
   int* ptr = (int*)malloc(10 * sizeof(int)); // here we allot a memory of 40 bytes
   // the sizeof(int) is 4 and we are allocating 10 blocks
   // i.e. 40 bytes
}

結論

この記事では、sizeof演算子の使用法とこれがどのように機能するかについて説明します。また、さまざまなタイプのユースケースをコーディングして、出力を確認し、説明しました。この演算子のユースケースをC++で実装しました。同じプログラムをC、Java、Pythonなどの他の言語で作成できます。この記事がお役に立てば幸いです。


  1. C ++のsizeof演算子とは何ですか?

    sizeofはキーワードですが、変数またはデータ型のサイズをバイト単位で決定するコンパイル時の演算子です。 sizeof演算子を使用して、クラス、構造体、共用体、およびその他のユーザー定義のデータ型のサイズを取得できます。 sizeofを使用する構文は次のとおりです- sizeof (data type) ここで、データ型は、クラス、構造体、共用体、およびその他のユーザー定義のデータ型を含む、目的のデータ型です。 sizeof演算子をchar型のオブジェクトに適用すると、1が得られます。sizeof演算子を配列に適用すると、配列IDで表されるポインターのサイズではなく、その配列の合計バイト数が

  2. C++の単項演算子

    単項演算子は、単一のオペランドに作用して新しい値を生成する演算子です。単項演算子は次のとおりです。 演算子 説明 間接演算子(*) ポインタ変数を操作し、ポインタアドレスの値と同等のl値を返します。これは、ポインタの「逆参照」と呼ばれます。 演算子のアドレス(&) 単項アドレス演算子(&)は、そのオペランドのアドレスを取ります。アドレスオブ演算子のオペランドは、関数指定子またはビットフィールドではなくレジスタストレージクラス指定子で宣言されていないオブジェクトを指定するl値のいずれかです。 単項プラス演算子(+) 単項プラス演算子(+)の結果は