D fournit des types de données fondamentaux pour les nombres entiers et les constantes à virgule flottante. Dans les programmes en D, l'arithmétique n'est réalisable que sur les nombres entiers. Vous pouvez utiliser les constantes à virgule flottante pour initialiser les structures de données, par contre, l'arithmétique à virgule flottante n'est pas autorisée dans D. D propose un modèle de données 32 et 64 bits pour les programmes d'écriture. Le modèle de données utilisé lors de l'exécution de votre programme correspond au modèle de données natif associé au noyau du système d'exploitation actif. Vous pouvez déterminer le modèle de données natif à l'aide de isainfo -b.
Le nom et la taille des types de nombre entier de chacun des deux modèles de données sont indiqués dans le tableau suivant. Les nombres entiers sont toujours représentés sous une forme à deux compléments dans l'ordre de codage natif des octets de votre système.
Tableau 2–2 Types de données des nombres entiers en D
Nom du type |
En 32–bits |
En 64–bits |
---|---|---|
char |
1 octet |
1 octet |
short |
2 octets |
2 octets |
int |
4 octets |
4 octets |
long |
4 octets |
8 octets |
long long |
8 octets |
8 octets |
Un préfixe ayant un qualificatif signed ou unsigned peut être ajouté aux types de nombre entier. En l'absence de qualificatif, le type est considéré comme étant signé. Le compilateur D fournit également les alias de type récapitulés dans le tableau suivant :
Tableau 2–3 Alias de type des nombres entiers en D
Nom du type |
Description |
---|---|
int8_t |
Nombre entier signé d'un octet |
int16_t |
Nombre entier signé de 2 octets |
int32_t |
Nombre entier signé de 4 octets |
int64_t |
Nombre entier signé de 8 octets |
intptr_t |
Nombre entier signé de la taille d'un pointeur |
uint8_t |
Nombre entier non signé d'un octet |
uint16_t |
Nombre entier non signé de 2 octets |
uint32_t |
Nombre entier non signé de 4 octets |
uint64_t |
Nombre entier non signé de 8 octets |
uintptr_t |
Nombre entier non signé de la taille d'un pointeur |
Ces alias de type reviennent à utiliser le nom du type de base correspondant dans le tableau précédent. Par ailleurs, ils sont correctement définis pour chaque modèle de données. Par exemple, le nom de type uint8_t correspond à un alias du type unsigned char. Pour plus d'informations sur la procédure de définition de vos propres alias de types à utiliser dans vos programmes en D, reportez-vous au Chapitre8Définitions des types et des constantes.
D propose des types à virgule flottante pour garantir la compatibilité avec les types et les déclarations en ANSI-C. D ne prend pas en charge les opérateurs à virgule flottante mais la fonction printf() permet de suivre et de formater les objets de données à virgule flottante. Le tableau suivant présente les types à virgule flottante que vous pouvez utiliser :
Tableau 2–4 Types de données à virgule flottante en langage D
Nom du type |
En 32–bits |
En 64–bits |
---|---|---|
float |
4 octets |
4 octets |
double |
8 octets |
8 octets |
long double |
16 octets |
16 octets |
D fournit également le type spécial string pour représenter les chaînes ASCII. Vous trouverez de plus amples informations sur les chaînes dans le Chapitre6Chaînes de caractères.