Grundläggande typer

D erbjuder ett antal grundläggande typer som alltid har samma storlek oavsett vilken plattform. Det enda undantaget är typen real som erbjuder den högsta möjliga precision för flyttal. Det finns inga skillnader för heltals storlekarna oavsett om programmet är kompilerat för ett 32-bitar eller ett 64-bitars system.

typstorlek
byte8-bit
bool, ubyte, char8-bit
short, ushort, wchar16-bit
int, uint, dchar32-bit
long, ulong64-bit

Flyttalstyper:

typstorlek
float32-bit
double64-bit
real>= 64-bit (generellt 64-bit, men 80-bit på Intel x86 32-bit)

Prefixet u betecknar en osignerad typ. char översätter till ett UTF-8 tecken, wchar används i UTF-16 strängar och dchar i UTF-32 strängar.

En omvandling mellan variabler av olika typer är endast tillåtet av kompilatorn om ingen precision går förlorad. En konvertering mellan flyttalstyper (T.ex. double till float) är dock tillåtet.

En omvandling till en annan typ kan framtvingas genom att använda cast(TYP) minVar uttrycket. Det måste dock användas med stor försiktighet eftersom cast uttrycket tillåts bryta typsystemet.

Det speciella nyckelordet auto skapar en variabel och antyder dess typ från höger sida av uttrycket. auto minVar = 7 kommer att härleda typen int för minVar. Notera att typen fortfarande är satt vid kompilering och kan inte ändras, precis som med andra variabler med en uttryckligen angiven typ.

Typegenskaper

Alla datatyper har en egenskap .init som de initialiseras till. För alla heltal är detta 0 och för flyttal är det nan (not a number, "Inte ett tal").

Heltalstyper och flyttalstyper har en .max egenskap för det högsta värdet de kan representera. Heltalstyperna har också en .min egenskap för det lägsta värdet de kan representera medan flyttalstyper har en .min_normal egenskap som defineras till det minsta representativa normaliserade värdet som inte är 0.

Flyttalstyper har också en egenskaperna .nan (NaN-värde), .infinity (oändlighetens värde), .dig (antal decimaler i precisionen), .mant_dig (antalet bitar i mantissa) och mer.

Varje typ har också en .stringof egenskap som ger sitt namn som en sträng.

size_t

I D har index oftast alias typen size_t, eftersom det är en typ som är tillräckligt stor för att representera en förskjutning i alla adresserbara minnen, uint för 32-bitars och ulong för 64-bitarsarkitekturer.

Fördjupning

NOTERA: Följande länkar är på engelska

Grundläggande referenser

Avancerade referenser

rdmd playground.d