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.