C++ データ型

C++ データ型

全て 変数 宣言時にデータ型を使用して、格納するデータの型を制限します。したがって、データ型は変数に格納できるデータの型を伝えるために使用されると言えます。 C++ で変数が定義されると、コンパイラは宣言されたデータ型に基づいてその変数にメモリを割り当てます。データ型ごとに必要なメモリ量は異なります。

C++ はさまざまなデータ型をサポートしており、プログラマはアプリケーションのニーズに適したデータ型を選択できます。データ型は、保存する値のサイズとタイプを指定します。ただし、C++ 命令はすべてのマシンで同一ですが、ストレージ表現と各データ型を操作するマシン命令はマシンごとに異なります。

C++ は次のデータ型をサポートします。

  1. 主要な または 内蔵 または 基本的なデータ型
  2. 派生データ型
  3. ユーザー定義のデータ型

C++ のデータ型

C++ のデータ型は主に 3 つの型に分類されます。

1. プリミティブデータ型 : これらのデータ型は組み込みまたは事前定義されたデータ型であり、ユーザーが変数を宣言するために直接使用できます。例: int、char、float、bool など。C++ で使用できるプリミティブ データ型は次のとおりです。

  • 整数
  • キャラクター
  • ブール値
  • 浮動小数点
  • 二重浮動小数点
  • 無価値または無効
  • ワイドキャラクタ

2. 派生データ型: 関数

  • 配列
  • ポインタ
  • 参照
  • 3. 抽象データ型またはユーザー定義のデータ型 : クラス

  • 構造

  • クラス
  • 連合
  • クラス
  • 列挙
  • Typedef で定義されたデータ型
  • プリミティブデータ型

      クラス
    • 整数 : 整数データ型に使用されるキーワードは次のとおりです。 整数 。通常、整数には 4 バイトのメモリ領域が必要で、範囲は -2147483648 ~ 2147483647 です。
    • キャラクター : 文字データ型は文字を格納するために使用されます。文字データ型に使用されるキーワードは次のとおりです。 チャー 。通常、文字には 1 バイトのメモリ領域が必要で、その範囲は -128 ~ 127 または 0 ~ 255 です。
    • ブール値 : ブール データ型は、ブール値または論理値を格納するために使用されます。ブール変数には次のいずれかを格納できます。 真実 または 間違い 。ブールデータ型に使用されるキーワードは次のとおりです。 ブール
    • 浮動小数点 : 浮動小数点データ型は、単精度浮動小数点値または 10 進数値を格納するために使用されます。浮動小数点データ型に使用されるキーワードは次のとおりです。 浮く 。通常、Float 変数には 4 バイトのメモリ空間が必要です。
    • 二重浮動小数点 : Double Floating Point データ型は、倍精度浮動小数点値または 10 進数値を格納するために使用されます。 double 浮動小数点データ型に使用されるキーワードは次のとおりです。 ダブル 。 double 変数には通常、8 バイトのメモリ空間が必要です。
    • 空所 : void は、値が存在しないことを意味します。 void データ型は、値のないエンティティを表します。 void データ型は、値を返さない関数に使用されます。
    • クラス
    • ワイドキャラクタ : ワイド文字 データ型も文字データ型ですが、このデータ型のサイズは通常の 8 ビット データ型よりも大きくなります。に代表される wchar_t 。通常、長さは 2 バイトまたは 4 バイトです。
    • sizeof() 演算子: sizeof() 演算子 コンピュータ メモリ内で変数/データ型が占めるバイト数を見つけるために使用されます。

    例:

    int m , x[50];

    コート <

    コート <

    変数のサイズは、使用するコンパイラやコンピュータによって、上記の表に示されているものと異なる場合があります。

    C++




    // C++ Program to Demonstrate the correct size> // of various data types on your computer.> #include> using> namespace> std;> int> main()> {> > cout < <> 'Size of char : '> < <> sizeof> (> char> ) < < endl;> > cout < <> 'Size of int : '> < <> sizeof> (> int> ) < < endl;> > cout < <> 'Size of long : '> < <> sizeof> (> long> ) < < endl;> > cout < <> 'Size of float : '> < <> sizeof> (> float> ) < < endl;> > cout < <> 'Size of double : '> < <> sizeof> (> double> ) < < endl;> > return> 0;> }>

    出力

    Size of char : 1 Size of int : 4 Size of long : 8 Size of float : 4 Size of double : 8 

    時間計算量: ○(1)

    空間の複雑さ: ○(1)

    データ型修飾子

    名前が示すように、データ型修飾子は組み込みデータ型で使用され、特定のデータ型が保持できるデータの長さを変更します。

    C++ の修飾子

    C++ で使用できるデータ型修飾子は次のとおりです。

    • 署名済み
    • 署名なし
    • 短い
    • 長さ

    以下の表は、型修飾子と組み合わせた場合に変更される組み込みデータ型のサイズと範囲をまとめたものです。

    データ・タイプ

    サイズ (バイト単位)

    範囲

    短い整数

    2

    -32,768 ~ 32,767

    unsigned short int

    2

    0~65,535

    符号なし整数

    4

    0 ~ 4,294,967,295

    整数

    4

    -2,147,483,648 ~ 2,147,483,647

    長い整数

    4

    -2,147,483,648 ~ 2,147,483,647

    符号なし長整数

    4

    0 ~ 4,294,967,295

    長い長い整数

    8

    -(2^63) から (2^63)-1

    符号なしlong long int

    8

    0 ~ 18,446,744,073,709,551,615

    符号付き文字

    1

    -128~127

    符号なし文字

    1

    0~255

    浮く

    4

    -3.4×10^38 ~ 3.4×10^38

    ダブル

    8

    -1.7×10^308から1.7×10^308

    ロングダブル

    12

    -1.1×10^4932から1.1×10^4932

    wchar_t

    2 または 4

    ワイド文字 1 文字

    注記 : 上記の値はコンパイラによって異なる場合があります。上の例では、GCC 32 ビットを考慮しました。
    以下に示すように、sizeof() 演算子を使用し、データ型のキーワードを引数としてこの関数に渡すことで、すべてのデータ型のサイズを表示できます。

    データ型の範囲を取得するには、次の表を参照してください。

    注: 構文 ヘッダー ファイルは、基本的なデータ型の範囲を見つけるために定義されています。符号なし修飾子の最小値はゼロです。したがって、符号なしの最小値に対してマクロ定数は定義されていません。

    マクロ定数

    名前

    特急

    CHAR_MIN

    char型のオブジェクトの最小値

    CHAR_MAX

    char型のオブジェクトの最大値

    SCHAR_MIN

    Signed char 型のオブジェクトの最小値

    SCHAR_MAX

    Signed char 型のオブジェクトの最大値

    FLIGHT_MAX

    Unsigned char 型のオブジェクトの最大値

    CHAR_BIT

    char オブジェクトのビット数

    MB_LEN_MAX

    マルチバイト文字の最大バイト数

    SHRT_MIN

    short int 型のオブジェクトの最小値

    SHRT_MAX

    short int 型のオブジェクトの最大値

    USHRT_MAX

    Unsigned short int 型のオブジェクトの最大値

    INT_MIN

    int 型のオブジェクトの最小値

    INT_MAX

    int 型のオブジェクトの最大値

    UINT_MAX

    Unsigned int 型のオブジェクトの最大値

    LONG_MIN

    long int 型のオブジェクトの最小値

    LONG_MAX

    long int 型のオブジェクトの最大値

    HEAD_MAX

    Unsigned long int 型のオブジェクトの最大値

    SHIP_MIN

    Long Long int 型のオブジェクトの最小値

    LLONG_MAX

    Long Long int 型のオブジェクトの最大値

    ULLONG_MAX

    Unsigned long long int 型のオブジェクトの最大値

    実際の値は特定のシステムとライブラリの実装によって異なりますが、ターゲット プラットフォームでのこれらのタイプの制限が反映されます。 LLONG_MIN、LLONG_MAX、および ULLONG_MAX は、1999 年以降の C 標準 (2011 年以降の C++ 標準: C++11 のみが含まれます) に準拠するライブラリに対して定義されています。

    マクロ定数を使用してデータ型の範囲を検索する C++ プログラム

    例:

    C++




    // C++ program to Demonstrate the sizes of data types> #include> #include> using> namespace> std;> int> main()> {> > cout < <> 'Size of char : '> < <> sizeof> (> char> ) < <> ' byte'> > < < endl;> > cout < <> 'char minimum value: '> < < CHAR_MIN < < endl;> > cout < <> 'char maximum value: '> < < CHAR_MAX < < endl;> > cout < <> 'Size of int : '> < <> sizeof> (> int> ) < <> ' bytes'> > < < endl;> > cout < <> 'Size of short int : '> < <> sizeof> (> short> int> )> > < <> ' bytes'> < < endl;> > cout < <> 'Size of long int : '> < <> sizeof> (> long> int> )> > < <> ' bytes'> < < endl;> > cout < <> 'Size of signed long int : '> > < <> sizeof> (> signed> long> int> ) < <> ' bytes'> < < endl;> > cout < <> 'Size of unsigned long int : '> > < <> sizeof> (unsigned> long> int> ) < <> ' bytes'> < < endl;> > cout < <> 'Size of float : '> < <> sizeof> (> float> ) < <> ' bytes'> > < < endl;> > cout < <> 'Size of double : '> < <> sizeof> (> double> )> > < <> ' bytes'> < < endl;> > cout < <> 'Size of wchar_t : '> < <> sizeof> (> wchar_t> )> > < <> ' bytes'> < < endl;> > return> 0;> }>

    出力

    Size of char : 1 byte char minimum value: -128 char maximum value: 127 Size of int : 4 bytes Size of short int : 2 bytes Size of long int : 8 bytes Size of signed long int : 8 bytes Size of unsigned long int : 8 bytes Size of float : 4 bytes Size of double : 8 bytes Size of wchar_t : 4 bytes 

    時間計算量: ○(1)

    空間の複雑さ: ○(1)

    C++




    #include> #include> using> namespace> std;> int> main() {> > // Integer data types> > int> a = 10;> > short> b = 20;> > long> c = 30;> > long> long> d = 40;> > cout < <> 'Integer data types: '> < < endl;> > cout < <> 'int: '> < < a < < endl;> > cout < <> 'short: '> < < b < < endl;> > cout < <> 'long: '> < < c < < endl;> > cout < <> 'long long: '> < < d < < endl;> > > // Floating-point data types> > float> e = 3.14f;> > double> f = 3.141592;> > long> double> g = 3.14159265358979L;> > cout < <> 'Floating-point data types: '> < < endl;> > cout < <> 'float: '> < < e < < endl;> > cout < <> 'double: '> < < f < < endl;> > cout < <> 'long double: '> < < g < < endl;> > > // Character data types> > char> h => 'a'> ;> > wchar_t> i = L> 'b'> ;> > char16_t j = u> 'c'> ;> > char32_t k = U> 'd'> ;> > cout < <> 'Character data types: '> < < endl;> > cout < <> 'char: '> < < h < < endl;> > wcout < <> 'wchar_t: '> < < i < < endl;> > cout < <> 'char16_t: '> < < j < < endl;> > cout < <> 'char32_t: '> < < k < < endl;> > > // Boolean data type> > bool> l => true> ;> > bool> m => false> ;> > cout < <> 'Boolean data type: '> < < endl;> > cout < <> 'true: '> < < l < < endl;> > cout < <> 'false: '> < < m < < endl;> > > // String data type> > string n => 'Hello, world!'> ;> > cout < <> 'String data type: '> < < endl;> > cout < < n < < endl;> > > return> 0;> }>

    出力

    Integer data types: int: 10 short: 20 long: 30 long long: 40 Floating-point data types: float: 3.14 double: 3.14159 long double: 3.14159 Character data types: char: a wchar_t: b char16_t: 99 char32_t: 100 Boolean data type: true: 1 false: 0 String data type: Hello, world! 

    このプログラムは、さまざまなデータ型の変数を宣言し、値を割り当てて、その値を出力します。

    整数データ型には、int、short、long、long long が含まれます。これらのデータ型は、さまざまなサイズの整数を表します。

    浮動小数点データ型には、float、double、long double が含まれます。これらのデータ型は、さまざまなレベルの精度の実数を表します。

    文字データ型には、char、wchar_t、char16_t、および char32_t が含まれます。これらのデータ型は、さまざまなサイズの個々の文字を表します。

    ブール データ型は、true または false の 2 つの値のいずれか 1 つだけを持つことができる単純なデータ型です。

    文字列データ型は文字のシーケンスです。このプログラムでは、文字列クラスを使用して文字列変数を宣言し、それに値を割り当てます。

    利点 :

    データ型は、プログラム内のデータを分類および整理する方法を提供し、理解と管理を容易にします。
    各データ型には保持できる特定の範囲の値があり、保存されるデータの種類をより正確に制御できます。
    データ型は、データの使用方法と操作方法に関する厳格なルールを強制することで、プログラム内のエラーやバグを防ぐのに役立ちます。
    C++ では幅広いデータ型が提供されているため、開発者は特定のタスクに最適なデータ型を選択できます。

    短所 :

    間違ったデータ型を使用すると、プログラムで予期しない動作やエラーが発生する可能性があります。
    Long double や char 配列などの一部のデータ型は、過度に使用すると大量のメモリを占有し、パフォーマンスに影響を与える可能性があります。
    C++ の型システムは複雑であるため、初心者が言語を効果的に学習して使用することが困難になる場合があります。
    データ型を使用すると、プログラムがさらに複雑になり冗長になり、読みにくくなり、理解しにくくなる可能性があります。