Partilhar via


Tipos internos (C++)

Os tipos internos (também chamados de tipos fundamentais) são especificados pelo padrão de linguagem C++ e são incorporados ao compilador. Os tipos internos não são definidos em nenhum arquivo de cabeçalho. Os tipos embutidos são divididos em três categorias principais: integral, ponto flutuante e vazio. Os tipos integrais representam números inteiros. Os tipos de vírgula flutuante podem especificar valores que podem ter partes fracionárias. A maioria dos tipos internos são tratados como tipos distintos pelo compilador. No entanto, alguns tipos são sinônimos, ou tratados como tipos equivalentes pelo compilador.

Tipo de vazio

O void tipo descreve um conjunto vazio de valores. Nenhuma variável do tipo void pode ser especificada. O void tipo é usado principalmente para declarar funções que não retornam valores ou para declarar ponteiros genéricos para dados não tipados ou digitados arbitrariamente. Qualquer expressão pode ser explicitamente convertida ou convertida para o tipo void. No entanto, tais expressões restringem-se aos seguintes usos:

std::nullptr_t

A palavra-chave nullptr é uma constante de ponteiro nulo do tipo std::nullptr_t, que é conversível em qualquer tipo de ponteiro bruto. Para obter mais informações, consulte nullptr.

Tipo booleano

O bool tipo pode ter valores true e false. O tamanho do bool tipo é específico da implementação. Consulte Tamanhos de tipos internos para obter detalhes de implementação específicos da Microsoft.

Tipos de caracteres

O char tipo é um tipo de representação de caracteres que codifica eficientemente os membros do conjunto básico de caracteres de execução. O compilador C++ trata variáveis do tipo char, signed chare unsigned char como tendo tipos diferentes.

Específico da Microsoft: as variáveis do tipo char são promovidas como int se fossem do tipo signed char por padrão, a menos que a /J opção de compilação seja usada. Neste caso, eles são tratados como tipo unsigned char e são promovidos para sem extensão de int sinal.

Uma variável de tipo wchar_t é um tipo de caractere largo ou multibyte. Use o prefixo antes de L um literal de caractere ou cadeia de caracteres para especificar o tipo de caractere largo.

Específico da Microsoft: por padrão, wchar_t é um tipo nativo, mas você pode usar /Zc:wchar_t- para criar wchar_t um typedef para unsigned short. O __wchar_t tipo é um sinônimo específico da Microsoft para o tipo nativo wchar_t .

O char8_t tipo é usado para representação de caracteres UTF-8. Ele tem a mesma representação que unsigned char, mas é tratado como um tipo distinto pelo compilador. O char8_t tipo é novo em C++20. Específico da Microsoft: o uso de requer a char8_t opção de /std:c++20 compilador ou posterior (como /std:c++latest).

O char16_t tipo é usado para representação de caracteres UTF-16. Deve ser grande o suficiente para representar qualquer unidade de código UTF-16. É tratado como um tipo distinto pelo compilador.

O char32_t tipo é usado para representação de caracteres UTF-32. Deve ser grande o suficiente para representar qualquer unidade de código UTF-32. É tratado como um tipo distinto pelo compilador.

Tipos de ponto flutuante

Os tipos de vírgula flutuante usam uma representação IEEE-754 para fornecer uma aproximação de valores fracionários em uma ampla gama de magnitudes. A tabela a seguir lista os tipos de vírgula flutuante em C++ e as restrições comparativas sobre tamanhos de tipo de vírgula flutuante. Essas restrições são exigidas pelo padrão C++ e são independentes da implementação da Microsoft. O tamanho absoluto dos tipos de ponto flutuante internos não é especificado no padrão.

Tipo Conteúdos
float Type float é o menor tipo de ponto flutuante em C++.
double Tipo double é um tipo de ponto flutuante que é maior ou igual ao tipo float, mas menor ou igual ao tamanho do tipo long double.
long double Type long double é um tipo de ponto flutuante que é maior ou igual a type double.

Específico da Microsoft: A representação de long double e double é idêntica. No entanto, long double e double são tratados como tipos distintos pelo compilador. O compilador Microsoft C++ usa as representações de ponto flutuante IEEE-754 de 4 e 8 bytes. Para obter mais informações, consulte Representação de ponto flutuante IEEE.

Tipos inteiros

O int tipo é o tipo inteiro básico padrão. Ele pode representar todos os números inteiros em um intervalo específico de implementação.

Uma representação inteira assinada é aquela que pode conter valores positivos e negativos. É usado por padrão ou quando a signed palavra-chave modificadora está presente. A unsigned palavra-chave modificador especifica uma representação não assinada que só pode conter valores não negativos.

Um modificador de tamanho especifica a largura em bits da representação inteira usada. A linguagem suporta short, longe long long modificadores. Um short tipo deve ter pelo menos 16 bits de largura. Um long tipo deve ter pelo menos 32 bits de largura. Um long long tipo deve ter pelo menos 64 bits de largura. A norma especifica uma relação de tamanho entre os tipos integrais:

1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)

Uma implementação deve manter os requisitos mínimos de tamanho e a relação de tamanho para cada tipo. No entanto, os tamanhos reais podem variar entre implementações. Consulte Tamanhos de tipos internos para obter detalhes de implementação específicos da Microsoft.

A int palavra-chave pode ser omitida quando signed, unsignedou modificadores de tamanho são especificados. Os modificadores e int o tipo, se presentes, podem aparecer em qualquer ordem. Por exemplo, short unsigned e unsigned int short referem-se ao mesmo tipo.

Sinónimos de tipo inteiro

Os seguintes grupos de tipos são considerados sinônimos pelo compilador:

  • short, short int, signed short, signed short int

  • unsigned short, unsigned short int

  • int, signed, signed int

  • unsigned, unsigned int

  • long, long int, signed long, signed long int

  • unsigned long, unsigned long int

  • long long, long long int, signed long long, signed long long int

  • unsigned long long, unsigned long long int

Os tipos inteiros específicos da Microsoft incluem a largura __int8específica, __int16, __int32e __int64 tipos. Esses tipos podem usar os signed modificadores e unsigned . O __int8 tipo de dados é sinónimo de tipo char, __int16 é sinónimo de tipo short, __int32 é sinónimo de tipo int, e __int64 é sinónimo de tipo long long.

Tamanhos dos tipos incorporados

A maioria dos tipos internos tem tamanhos definidos pela implementação. A tabela a seguir lista a quantidade de armazenamento necessária para tipos internos no Microsoft C++. Em particular, long é de 4 bytes mesmo em sistemas operacionais de 64 bits.

Tipo Tamanho
bool, char, char8_t, unsigned char, signed char, __int8 1 byte
char16_t, __int16, short, unsigned short, wchar_t, __wchar_t 2 bytes
char32_t, float, __int32, int, unsigned int, long, unsigned long 4 bytes
double, __int64, long double, long long, unsigned long long 8 bytes

Consulte Intervalos de tipos de dados para obter um resumo do intervalo de valores de cada tipo.

Para obter mais informações sobre conversão de tipo, consulte Conversões padrão.

Ver também

Intervalos de tipos de dados