基本型
コンピュータの頭脳はCPUであることを見てきた。プログラムのほとんどのタスクはCPUによって実行され、残りはコンピュータの他の部分に割り当てられる。
コンピュータの最小のデータ単位はビットと呼ばれる。ビットの値は0または1のいずれかである。
0と1の値しか保持できないデータ型では用途が非常に限られるため、CPUは1ビット以上の組み合わせによるより大きなデータ型をサポートしている。例えば、バイトは通常8ビットで構成される。Nビットのデータ型がCPUがサポートする最も効率的なデータ型である場合、そのCPUはNビットCPUであるとする。32ビットCPU、64ビットCPUなどである。
しかし、CPUがサポートするデータ型だけではまだ不十分だ。学生の名前 やトランプの数字のような、より高レベルの概念を表現することはできない。同様に、Dの基本データ型も、多くの高レベルの概念を表現するには不十分だ。このような概念は、基本型を利用して、構造体や クラスとしてプログラマが定義する必要がある。構造体とクラスについては、後の章で説明する。
Dの基本型は、他の多くの言語の基本型と似ている。これらの型については、後の章で詳しく説明する。
論理式型
これは、論理式で使用される型だ。真の場合はtrue、偽の場合はfalseの値を取る。
| 型 | 定義 | 初期値 |
|---|---|---|
bool | ブール型 | false |
整数型
整数は、小数部分のない数値でである。例えば、3は整数だが、3.5は整数ではない。
負の値と正の値を持つことができる型は、符号付き型だ。これらの型の名前は、負の符号に由来している。正の値しか持てない型は、符号なし型だ。これらの型の名前の先頭にあるuは、符号なし(unsigned)に由来している。
| 型 | 定義 | 初期値 |
|---|---|---|
byte | 符号付き8ビット | 0 |
ubyte | 符号なし8ビット | 0 |
short | 符号付き16ビット | 0 |
ushort | 符号なし16ビット | 0 |
int | 符号付き32ビット | 0 |
uint | 符号なし32ビット | 0 |
long | 符号付き64ビット | 0L |
ulong | 符号なし64ビット | 0LU |
浮動小数点型
浮動小数点型は、1.25のような小数点を含む値を表現できる型だ。浮動小数点計算の精度は、型のビット数に正比例する。ビット数が多いほど、結果はより正確になる。小数点を表現できるのは浮動小数点型のみだ。intなどの整数型は、1や2などの整数値しか表現できない。
整数とは異なり、浮動小数点型には無効な値を表す特別な値がある。これらの特別な値は、.nanというプロパティとして記述され、"not a number"(数値ではない)の略語だ。
| 型 | 定義 | 初期値 |
|---|---|---|
float | 32ビット | float.nan |
double | 64ビット | double.nan |
real | 少なくとも64ビットだが、ハードウェアがより多くのビット数を提供する場合、 になる | real.nan |
文字型
これらの型は、アルファベットの文字やその他の文字体系の記号を表すために使われる。
| 型 | 定義 | 初期値 |
|---|---|---|
char | UTF-8コード単位 | 0xFF |
wchar | UTF-16コード単位 | 0xFFFF |
dchar | UTF-32コード単位 とUnicodeコードポイント | 0x0000FFFF |
上記に加えて、キーワードvoidは型がないことを表す。
キーワードcentおよびucentは、符号付きおよび符号なしの128ビット値を表すために将来使用するために予約されている。
特に理由がない限り、intを使用して値全体を表現することができる。小数点以下の値を持つ概念を表現するには、doubleを使用しよう。
型のプロパティ
Dの型には、その型に関する情報を提供するプロパティがある。プロパティには、型の名前の後にドットを付けてアクセスする。例えば、intのsizeofプロパティには、int.sizeofとアクセスする。この章では、型プロパティの一部についてのみ説明する。
-
.stringofは型の名前 -
.sizeofは、バイト単位の型の長さだ。(ビット数を決定するには、この値にbyteのビット数である8を掛ける必要がある。) -
.minは"minimum"の略で、この型が持つことができる最小の値だ。 -
.maxは"最大"の略で、この型が持つことができる最大の値だ。 -
.initは"初期値"(デフォルト値)の略で、初期値が指定されていない場合にDが型に割り当てる値だ。
intのこれらのプロパティを出力するプログラムは、次の通りだ。
プログラムの出力は次の通りだ:
| 型 | int |
|---|---|
| バイト数 | 4 |
| 最小値 | -2147483648 |
| 最大値 | 2147483647 |
| 初期値 | 0 |
size_t
size_t型も出てくる。size_tは独立した型ではなく、既存のunsigned型の別名である。その名前は"サイズ型"から来ている。サイズや数などの概念を表すのに最も適した型だ。
size_tは、プログラムが潜在的に使用できるメモリのバイト数を表現するのに十分な大きさだ。実際のサイズは、システムによって異なる。32ビットシステムではuint、64ビットシステムではulongとなる。そのため、32ビットシステムでは、ulongはsize_tより大きくなる。
.stringofプロパティを使用すると、size_tがシステム上でどのようなエイリアスであるかを確認できる。
私のシステムでは、このプログラムの出力は次の通りだ。
ulong
演習
他の型のプロパティを出力しよう。注
- 予約済み型
centおよびucentは、どのプログラムでも使用できない。 voidは、.min、.max、.initプロパティを持っていない。.min文字型の.max、.init、および 値は、出力で目に見える表現を持っていない。.minプロパティは、浮動小数点型には使用できない。(基本型のさまざまなプロパティは、Dプロパティの仕様で確認できる)。後で浮動小数点型の章で説明するように、.maxプロパティの負の値、例えば-double.maxを使用する必要がある。