Cplusplus-cpp-data-types
C ++データ型
任意の言語でプログラムを作成する際、さまざまな変数を使用してさまざまな情報を保存する必要があります。 変数は、値を保存するために予約されたメモリの場所に他なりません。 これは、変数を作成するときに、メモリ内にスペースを確保することを意味します。
文字、ワイド文字、整数、浮動小数点、二重浮動小数点、ブールなどのさまざまなデータ型の情報を保存することができます。 変数のデータ型に基づいて、オペレーティングシステムはメモリを割り当て、予約メモリに保存できるものを決定します。
プリミティブな組み込み型
C は、プログラマーに豊富な品揃えの組み込みおよびユーザー定義のデータ型を提供します。 次の表は、7つの基本的なC データ型を示しています-
Type | Keyword |
---|---|
Boolean | bool |
Character | char |
Integer | int |
Floating point | float |
Double floating point | double |
Valueless | void |
Wide character | wchar_t |
基本的なタイプのいくつかは、これらのタイプ修飾子の1つ以上を使用して変更することができます-
- 署名済み
- 署名なし
- ショート
- long
次の表は、変数の種類、メモリに値を保存するのに必要なメモリ量、およびそのような種類の変数に保存できる最大値と最小値を示しています。
Type | Typical Bit Width | Typical Range |
---|---|---|
char | 1byte | -127 to 127 or 0 to 255 |
unsigned char | 1byte | 0 to 255 |
signed char | 1byte | -127 to 127 |
int | 4bytes | -2147483648 to 2147483647 |
unsigned int | 4bytes | 0 to 4294967295 |
signed int | 4bytes | -2147483648 to 2147483647 |
short int | 2bytes | -32768 to 32767 |
unsigned short int | 2bytes | 0 to 65,535 |
signed short int | 2bytes | -32768 to 32767 |
long int | 8bytes | -2,147,483,648 to 2,147,483,647 |
signed long int | 8bytes | same as long int |
unsigned long int | 8bytes | 0 to 4,294,967,295 |
long long int | 8bytes | -(2^63) to (2^63)-1 |
unsigned long long int | 8bytes | 0 to 18,446,744,073,709,551,615 |
float | 4bytes | |
double | 8bytes | |
long double | 12bytes | |
wchar_t | 2 or 4 bytes | 1 wide character |
変数のサイズは、コンパイラーと使用しているコンピューターによって、上記の表に示されているものと異なる場合があります。
以下は、コンピューター上のさまざまなデータ型の正しいサイズを生成する例です。
#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;
}
この例では、 endl を使用します。これは、各行の後に改行文字を挿入し、<<演算子を使用して複数の値を画面に渡します。 また、* sizeof()*演算子を使用して、さまざまなデータ型のサイズを取得しています。
上記のコードをコンパイルして実行すると、マシンごとに異なる可能性のある次の結果が生成されます-
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
typedef宣言
*typedef* を使用して、既存のタイプの新しい名前を作成できます。 以下は、typedefを使用して新しい型を定義する簡単な構文です-
typedef type newname;
たとえば、以下はフィートがintの別の名前であることをコンパイラに伝えます-
typedef int feet;
さて、次の宣言は完全に正当であり、距離と呼ばれる整数変数を作成します-
feet distance;
列挙型
列挙型は、オプションの型名と、型の値として使用できるゼロ個以上の識別子のセットを宣言します。 各列挙子は、型が列挙である定数です。
列挙を作成するには、キーワード enum を使用する必要があります。 列挙型の一般的な形式は-
enum enum-name { list of names } var-list;
ここで、enum-nameは列挙型の名前です。 名前のリストはカンマ区切りです。
たとえば、次のコードは、colorsと呼ばれる色の列挙とcolor型の変数cを定義しています。 最後に、cには値「blue」が割り当てられます。
enum color { red, green, blue } c;
c = blue;
デフォルトでは、最初の名前の値は0、2番目の名前の値は1、3番目の名前の値は2というようになります。 ただし、初期化子を追加することで、名前、特定の値を指定できます。 たとえば、次の列挙では、 green の値は5です。
enum color { red, green = 5, blue };
ここで、 blue の値は6です。これは、各名前がその前の名前よりも1つ大きいためです。