Tipos de datos básicos

D proporciona varios tipos de datos básicos que siempre tienen el mismo tamaño independientemente de la plataforma, siendo el tipo real la única excepción, proporcionando la mayor precisión de punto flotante disponible. No hay diferencias en el tamaño de un entero independientemente de si la aplicación es compilada para sistemas de 32 o 64 bits.

tipotamaño
bool8 bits
byte, ubyte, char8 bits
short, ushort, wchar16 bits
int, uint, dchar32 bits
long, ulong64 bits

Tipos de coma flotante

tipotamaño
float32 bits
double64 bits
real>= 64 bits (generalmente 64 bits, pero 80 bits en Intel x86 de 32 bits)

El prefijo u denota tipos numéricos sin signo. char especifica caracteres UTF-8, wchar se usa para cadenas UTF-16 y dchar se usa para cadenas UTF-32.

Las conversiones entre variables de tipos distintos sólo son permitidas por el compilador si no se pierde precisión. Sin embargo, las conversiones entre tipos de coma flotante (por ejemplo, de double a float) sí están permitidas.

La palabra reservada auto crea una variable e infiere su tipo a partir del lado derecho de la expresión. auto miVar = 7 deducirá el tipo int para miVar. Aunque se use auto en la declaración de variables, su tipo se define durante la compilación y no puede ser cambiado durante la ejecución, al igual que con cualquier otra variable declarada con un tipo asignado explícitamente.

Propiedades de los tipos

Todos los tipos de datos tienen una propiedad .init usada para la inicialización de variables. Para todos los enteros, esta vale 0 y para variables de coma flotante esta vale nan (no es un número, not a number en inglés).

Los tipos enteros y de coma flotante tienen la propiedad .max que es el máximo valor que pueden representar. Los tipos enteros también tienen la propiedad .min para el valor más pequeño que pueden representar, mientras que los tipos de coma flotante tienen la propiedad .min_normal que se define como el mínimo valor normalizado representable que no es 0.

Los tipos de coma flotante también tienen, entre otras, las propiedades .nan (el valor NaN), .infinity (el valor infinito), .dig (el número de dígitos decimales de precisión) y .mant_dig (número de bits en la mantisa).

Todos los tipos de datos tienen también la propiedad .stringof que devuelve el nombre del tipo de dato como una cadena de caracteres (string).

Índices en D

Los índices en D usan generalmente el tipo de dato size_t, ya que es un tipo de dato lo suficientemente grande como para representar un desplazamiento (offset) que cubra toda la memoria direccionable. Este tipo de dato es uint en arquitecturas de 32 bits y ulong en arquitecturas de 64 bits.

Expresión assert

assert es una expresión que verifica condiciones en modo de depuración y, en caso de no cumplirse la condición, esta aborta la ejecución del programa con un AssertionError. assert(0) se usa para indicar código inalcanzable.

En profuncidad

Referencias básicas

Referencias avanzadas

rdmd playground.d