1-03. データ型

公開日: 18:17 1. 基本編/1-03. データ型

どのプログラミング言語においても様々な情報を保存するために、様々な変数を使う必要があります。変数は、値を格納するために予約されたメモリ位置に過ぎません。これは、変数を作成するときはメモリ内にいくつかのスペースを確保する必要があることを意味します。

あなたは文字、ワイド文字、整数、浮動小数点、倍精度浮動小数点、ブール値などのさまざまなデータ型の情報を保存したいでしょう。変数のデータ型に基づいてオペレーティングシステムはメモリを割り当て、確保されたメモリに何を格納するかを決定します。

C++に組み込まれている基本的な型
C++にはユーザ定義データ型はもちろん、豊富な型が組み込まれています。次のリストはC++の基本的な型です。

キーワード
真偽bool
文字char
整数int
浮動小数float
実数double
型なしvoid
ワイド文字wchar_t

いくつかの基本的な型は次のような修飾子を1つ以上使うことで変更できます。
  • signed
  • unsigned
  • short
  • long

下記は変数の型が、値を格納するのにどれだけメモリが必要か、その型が格納できる最大値と最小値の一覧です。

TypeTypical Bit WidthTypical Range
char1byte-127 ~ 127 または ~ to 255
unsigned char1byte0 ~ 255
signed char1byte-127 ~ 127
int4bytes-2147483648 ~ 2147483647
unsigned int4bytes0 ~ 4294967295
signed int4bytes-2147483648 ~ 2147483647
short int2bytes-32768 ~ 32767
unsigned short intRange0 ~ 65,535
signed short intRange-32768 ~ 32767
long int4bytes-2,147,483,647 ~ 2,147,483,647
signed long int4byteslong intと同じ
unsigned long int4bytes0 ~ 4,294,967,295
float4bytes+/- 3.4e +/- 38 (~7 digits)
double8bytes+/- 1.7e +/- 308 (~15 digits)
long double8bytes+/- 1.7e +/- 308 (~15 digits)
wchar_t2 or 4 bytes1 wide character

変数のサイズは上の一覧と異なる可能性があり、コンパイラやコンピュータに依存します。

次のサンプルコードは、使用しているコンピュータの正しいデータサイズを出力するものです。


この例ではendl;を使い各行の後に改行文字を挿入し、複数の値を画面に渡すのに<<演算子が使われています。また、sizeof()演算子を使い様々なデータ型のサイズを取得しています。

上のコードをコンパイルし実行すると、使用しているPCによって異なる結果が得られます

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 : 2

typedefによる宣言

typedefを使って既存の型に新しい名前をつけることができます。typedefを使って新しい型を定義する簡単な構文は次のとおりです。
typedef type newname;
次の例は、コンパイラにfeetはintの別名であることを伝えます。
typedef int feet;
これで、次の宣言は完全に正当なdistanceという名前のint型整数を作成します。
feet distance;

列挙体

列挙体は、任意の型名と、型の値として使われる0個以上の識別子のセットを宣言します。列挙体をつくるには、enumキーワードが必要です。一般的な列挙体の形式は
enum enum-name { 名前のリスト } var-list;
となります。enum-nameは列挙体の型の名前です。名前のリストはコンマで句切られます。
例として、次のコードは色の列挙体と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 };
それぞれ名前は前のものより1大きくなるので、ここではblueは6の値になります。
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿