Manuel de suivi dynamique Solaris

Types et tailles des données

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.