Elementare Datentypen

D bietet eine Vielzahl an elementaren Datentypen, die immer die gleiche Größe haben - unabhängig von der Platt­form. Die einzige Ausnahme ist der Typ real für welchen der Compiler die höchstmöglichste Genauigkeit für Gleitkommazahlen wählt. Es besteht kein Unterschied zwischen der Größe eines Ganzzahltypen - unabhängig davon ob die Anwendung für eine 32-bit oder 64-bit Architektur kompiliert wird.

bool 8-bit
byte, ubyte, char 8-bit
short, ushort, wchar 16-bit
int, uint, dchar 32-bit
long, ulong 64-bit

Gleitkommatypen

float 32-bit
double 64-bit
real abhängig von der Platt­form, 80-bit für Intel x86 32-bit

Der Präfix u kennzeichnet Typen ohne Vorzeichen (vom Englischen unsigned). Ein char ist ein UTF-8 Zeichen, wchar ein UTF-16 Zeichen and dchar ein UTF-32 Zeichen.

Eine Umwandlung zwischen Variablen ist nur erlaubt wenn keine Präzision verloren gehen kann, obgleich die Umwandlung von Gleitkommatypen (z. B. double zu float) erlaubt ist.

Eine Umwandlung zu einem anderen Typ kann durch den Ausdruck cast(TYPE) <varName> erzwungen werden. Dieser Ausdruck sollte aber mit großer Vorsicht verwenden werden, da mit dem cast Ausdruck das Typsystem ausgeschaltet wird.

Das spezielle Schlüsselwort auto erzeugt eine Variable und inferiert ihren Typ automatisch anhand des Ausdruck auf der rechten Seite. Zum Beispiel wird auto i = 7 den Typ int deduzieren. Es sollte beachtet werden, dass auto Typen trotzdem statisch während der Kompilierphase festgelegt werden und den Typ nachträglich nicht ändern können, wie für jede andere Variable mit explizitem Typ.

Eigenschaften eines Typs

Alle Datentypen haben die Eigenschaft .init, welche dem Initialwert gleicht. Für alle Ganzzahlen ist dies 0 und für Gleitkommazahlen ist es nan (vom Englischen "not a number"). Sowohl Ganzzahl- als auch Gleitkommatypen haben eine .min und .max Eigenschaft für die kleinste und größte Zahl, die der Typ darstellen kann. Gleitkommatypen besitzen noch weitere Eigenschaften: nan (der ungültige Zustand), infinity (unendlich), .dig (Anzahl der dezimalen Stellen der Präzision) und .mant_dig (Anzahl an Bits der Mantisse) und Weitere.

Zusätzlich besitzt jeder Typ die .stringof Eigenschaft welche seinen Namen als String zurückgibt.

Indizes in D

In D haben Indizes den Aliasnamen size_t welcher groß genug ist um alle Speicherzellen adressieren zu können, d.h. für ein 32-bit System uint und für ein 64-bit System ulong.

assert ist eine eingebaute Anweisung welche Ausdrücke im Debugmodus validiert und einen AssertionError wirft, wenn die Evaluation des Ausdruckes false liefert.

In der Tiefe

Grundlegende Referenzen

Weitergehende Referenzen

rdmd playground.d