Partilhar via


Especificadores do tipo C

Os especificadores de tipo em declarações definem o tipo de uma declaração de variável ou função.

Sintaxe

type-specifier: voidcharshortintlongfloatdoublesignedunsignedstruct-or-union-specifierenum-specifiertypedef-name

Os signed chartipos , signed int, signed short int, e signed long int , juntamente com seus unsigned homólogos e enum, são chamados de tipos integrais . Os floatespecificadores , double, e long double tipo são referidos como tipos flutuantes ou de vírgula flutuante . Você pode usar qualquer especificador de tipo integral ou de ponto flutuante em uma declaração de variável ou função. Originalmente, se um type-specifier não estava previsto em uma declaração, era considerado como int. O compilador da Microsoft não aceita mais declarações padrão int .

As palavras-chave signed opcionais podem unsigned preceder ou seguir qualquer um dos tipos integrais, exceto enum, e também podem ser usadas sozinhas como especificadores de tipo, caso em que são entendidas como signed int e unsigned int, respectivamente. Quando usada isoladamente, a palavra-chave int é assumida como signed. Quando usadas isoladamente, as palavras-chave long e short são entendidas como long int e short int.

Os tipos de enumeração são considerados tipos básicos. Os especificadores de tipo para tipos de enumeração são discutidos em Declarações de enumeração.

A palavra-chave void tem três usos: para especificar um tipo de retorno de função, para especificar uma lista de tipos de argumento para uma função que não usa argumentos e para especificar um ponteiro para um tipo não especificado. Você pode usar o void tipo para declarar funções que não retornam nenhum valor ou para declarar um ponteiro para um tipo não especificado. Consulte Argumentos para obter informações sobre void quando ele aparece sozinho entre parênteses após o nome de uma função.

Específico da Microsoft

A verificação de tipo agora está em conformidade com ANSI, o que significa que tipo short e tipo int são tipos distintos. Por exemplo, este exemplo mostra uma redefinição no compilador Microsoft C que foi aceita por versões anteriores do compilador.

int   myfunc();
short myfunc();

Este próximo exemplo também gera um aviso sobre indirecionamento para diferentes tipos:

int *pi;
short *ps;

ps = pi;  /* Now generates warning */

O compilador Microsoft C também gera avisos para diferenças no sinal. Por exemplo:

signed int *pi;
unsigned int *pu;

pi = pu;  /* Now generates warning */

As expressões de tipo void são avaliadas quanto a efeitos secundários. Você não pode usar o valor (inexistente) de uma expressão que tenha tipo void de qualquer forma, nem pode converter uma void expressão (por conversão implícita ou explícita) em qualquer tipo, exceto void. Se você usar uma expressão de qualquer outro tipo em um contexto onde uma void expressão é necessária, seu valor será descartado.

Para estar em conformidade com a especificação ANSI, void** não pode ser usado como int**. Somente void* pode ser usado como um ponteiro para um tipo não especificado.

END Específico da Microsoft

Você pode criar mais especificadores de tipo com typedef declarações, conforme descrito em Declarações Typedef. Consulte Armazenamento de tipos básicos para obter informações sobre o tamanho de cada tipo.

Ver também

Declarações e Tipos
typeof, __typeof__ (C23)
typeof_unqual, __typeof_unqual__ (C23)