Tipos internos (C++)
Tipos internos (também chamados de tipos fundamentais) são especificados pelo padrão de linguagem C++ e incorporados ao compilador. Os tipos internos não são definidos em nenhum arquivo de cabeçalho. Os tipos internos são divididos em três categorias principais: integral, floating-point e void. Tipos integrais representam números inteiros. Tipos floating-point podem especificar valores que podem ter partes fracionárias. A maioria dos tipos internos é tratada como tipos distintos pelo compilador. No entanto, alguns tipos são sinônimos ou tratados como tipos equivalentes pelo compilador.
Tipo void
O tipo void
descreve um conjunto vazio de valores. Nenhuma variável do tipo void
pode ser especificada. O tipo void
é usado basicamente para declarar funções que não retornam nenhum valor ou para declarar ponteiros genéricos para dados não digitados ou digitados arbitrariamente. Qualquer expressão pode ser explicitamente convertida no tipo void
. No entanto, tais expressões estão restritas aos seguintes usos:
Uma instrução de expressão. (Para obter mais informações, confira Expressões.)
O operando esquerdo do operador vírgula. (Para obter mais informações, consulte Operador de vírgula.)
O segundo ou terceiro operando do operador condicional (
? :
). (Para obter mais informações, consulte Expressões com o operador condicional.)
std::nullptr_t
A palavra-chave nullptr
é uma constante do ponteiro nulo do tipo std::nullptr_t
, que é conversível em qualquer tipo bruto de ponteiro. Para obter mais informações, consulte nullptr
.
Tipos boolianos
O tipo bool
pode ter valores true
e false
. O tamanho do tipo bool
é específico da implementação. Consulte Tamanhos de tipos internos para obter detalhes de implementação específicos da Microsoft.
Tipos de caractere
O tipo char
é um tipo de representação de caractere que codifica com eficiência os membros do conjunto de caracteres de execução básico. O compilador do C++ trata variáveis do tipo char
, signed char
e unsigned char
como tendo tipos diferentes.
Específico da Microsof: as variáveis do tipo char
são promovidas para int
como se fossem do tipo signed char
por padrão, a menos que a opção de compilação /J
seja usada. Nesse caso, elas são tratadas como tipo unsigned char
e promovidas a int
sem extensão de sinal.
Uma variável do tipo wchar_t
designa um tipo de caractere largo ou caractere multibyte. Use o prefixo L
antes de 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 tornar wchar_t
um typedef para unsigned short
. O tipo __wchar_t
é um sinônimo específico da Microsoft para o tipo wchar_t
nativo.
O tipo char8_t
é usado para a representação de caracteres UTF-8. Ele tem a mesma representação que unsigned char
, mas é tratado como um tipo distinto pelo compilador. O tipo char8_t
é novo no C++20. Específico da Microsoft: o uso de char8_t
requer a opção do compilador /std:c++20
ou posterior (como /std:c++latest
).
O tipo char16_t
é usado para a representação de caracteres UTF-16. Deve ser grande o suficiente para representar qualquer unidade de código UTF-16. Ele é tratado como um tipo distinto pelo compilador.
O tipo char32_t
é usado para a representação de caracteres UTF-32. Deve ser grande o suficiente para representar qualquer unidade de código UTF-32. Ele é tratado como um tipo distinto pelo compilador.
Tipos de ponto flutuante
Os tipos de ponto 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 ponto flutuante em C++ e as restrições comparativas em tamanhos de tipo de ponto 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 | Sumário |
---|---|
float |
O tipo float é o menor tipo de ponto flutuante em C++. |
double |
O 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 |
Tipo long double é um tipo de ponto flutuante que é maior ou igual ao tipo 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 do Microsoft C++ usa as representações de ponto flutuante IEEE-754 de 4 e 8 bytes. Para obter mais informações, consulte a representação de ponto flutuante do IEEE.
Tipos de inteiro
O tipo int
é o tipo inteiro básico padrão. Ele pode representar todos os números inteiros em um intervalo específico da implementação.
Uma representação de inteiro com sinal é aquela que pode conter valores positivos e negativos. Ela é usada por padrão ou quando a palavra-chave do modificador signed
está presente. A palavra-chave do modificador unsigned
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 de inteiro usada. A linguagem dá suporte aos modificadores short
, long
e long long
. Um tipo short
deve ter pelo menos 16 bits de extensão. Um tipo long
deve ter pelo menos 32 bits de extensão. Um tipo long long
deve ter pelo menos 64 bits de extensão. O padrão 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 e variam entre implementações. Consulte Tamanhos de tipos internos para obter detalhes de implementação específicos da Microsoft.
A palavra-chave int
pode ser omitida quando os modificadores signed
, unsigned
ou de tamanho são especificados. Os modificadores e o tipo int
, se presentes, podem aparecer em qualquer ordem. Por exemplo, short unsigned
e unsigned int short
se referem 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 os tipos __int8
, __int16
, __int32
e __int64
de extensão específica. Esses tipos podem usar os modificadores signed
e unsigned
. O tipo de dados __int8
é sinônimo do tipo char
, __int16
é sinônimo do tipo short
, __int32
é sinônimo do tipo int
e __int64
é sinônimo do tipo long long
.
Tamanhos de 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
são 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 ver um resumo do intervalo de valores de cada tipo.
Para obter mais informações sobre a conversão de tipos, consulte Conversões padrão.
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de