Guia de rastreamento dinâmico Solaris

Tipos e tamanhos de dados

D fornece tipos de dados fundamentais para constantes de inteiro e de ponto flutuante. A aritmética só pode ser realizada em inteiros em programas em D. As constantes de ponto flutuante podem ser usadas para inicializar estruturas de dados, mas a aritmética de ponto flutuante não é permitida em D. D fornece modelos de dados de 32 e 64 bits para serem usados na criação de programas. O modelo de dados usado quando você executa o seu programa é o modelo de dados nativo associado ao kernel do sistema operacional ativo. Você pode determinar o modelo de dados nativo do sistema usando isainfo -b.

Os nomes dos tipos inteiros e seus tamanhos em cada um dos dois modelos de dados são mostrados na tabela seguinte. Os inteiros são sempre representados no formato de dois complementos na ordem de codificação de byte nativa do sistema.

Tabela 2–2 Tipos de dados inteiros de D

Nome de tipo 

Tamanho 32–bit 

Tamanho 64–bit 

char

1 byte 

1 byte 

short

2 bytes 

2 bytes 

int

4 bytes 

4 bytes 

long

4 bytes 

8 bytes 

long long

8 bytes 

8 bytes 

Tipos inteiros podem ser prefixados com o qualificador signed ou unsigned . Se não houver qualificador de sinal, o tipo é presumidamente assinado. O compilador de D também fornece os alias de tipo listados na tabela seguinte:

Tabela 2–3 Alias de tipo inteiro de D

Nome de tipo 

Descrição 

int8_t

Inteiro assinado de 1 byte 

int16_t

Inteiro assinado de 2 bytes 

int32_t

Inteiro assinado de 4 bytes 

int64_t

Inteiro assinado de 8 bytes 

intptr_t

Inteiro assinado do tamanho de um ponteiro 

uint8_t

Inteiro não assinado de 1 byte 

uint16_t

Inteiro não assinado de 2 bytes 

uint32_t

Inteiro não assinado de 4 bytes 

uint64_t

Inteiro não assinado de 8 bytes 

uintptr_t

Inteiro não assinado do tamanho de um ponteiro 

Esses alias de tipo são equivalentes a usar o nome do tipo base correspondente na tabela anterior e são definidos apropriadamente para cada modelo de dados. Por exemplo, o nome de tipo uint8_t é um alias do tipo unsigned char. Consulte o Capítulo 8Definições de tipo e de constante para obter informações sobre como definir seus próprios alias de tipo a serem usados em seus programas em D.

D fornece tipos de ponto flutuante para compatibilidade com declarações e tipos ANSI-C. Operadores de ponto flutuante não são aceitos em D, mas objetos de dados de ponto flutuante podem ser rastreados e formatados por meio da função printf() . Os tipos de ponto flutuante listados na tabela seguinte podem ser usados:

Tabela 2–4 Tipos de dados de ponto flutuante de D

Nome de tipo 

Tamanho 32–bit 

Tamanho 64–bit 

float

4 bytes 

4 bytes 

double

8 bytes 

8 bytes 

long double

16 bytes 

16 bytes 

D também fornece o tipo especial string para representar as seqüências ASCII. As seqüências são discutidas em mais detalhes no Capítulo 6Seqüências.