Especificadores de tipo c
Especificadores de tipo em declarações definem o tipo de uma declaração de função ou variável.
Sintaxe
especificador de tipo:
Voidchar
short
int
long
float
double
assinado
não assinado
especificador de struct ou união
especificador de enum
nome de TypeDef
O assinado char, assinado int, assinado short int, e assinado long int tipos, juntos com seus unsigned contrapartes e enum, são chamados de tipos "integral".O float, double, e long double especificadores de tipo são chamados de tipos "flutuantes" ou "ponto flutuante".Você pode usar qualquer especificador de tipo integral ou de ponto flutuante em uma declaração de função ou variável.Se um especificador de tipo não é fornecido em uma declaração, ela é considerada como int.
As palavras-chave opcional assinado e unsigned pode preceder ou seguir qualquer um dos tipos integrais, exceto enume também pode ser usado isoladamente como especificadores de tipo, caso em que eles são compreendidos como assinado int e unsigned int, respectivamente.Quando usada sozinha, a palavra-chave int será considerado assinado.Quando usada sozinha, as palavras-chave longo e curto são compreendidos como long int e short int.
Tipos de enumeração são considerados tipos básicos.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 uma função retornar um tipo, para especificar uma lista de tipo de argumento para uma função que não aceita argumentos e para especificar um ponteiro para um tipo não especificado.Você pode usar o void tipo de funções que não retornam nenhum valor de declarar ou declarar um ponteiro para um tipo não especificado.Consulte argumentos para obter informações sobre void quando aparecer sozinha dentro dos parênteses após o nome de uma função.
Específicos do Microsoft
Agora é compatível com ANSI, que significa que esse tipo de verificação de tipo curto e o tipo de int são tipos distintos.Por exemplo, isso é uma redefinição no compilador c da Microsoft que foi aceita por versões anteriores do compilador.
int myfunc();
short myfunc();
Neste próximo exemplo também gera um aviso sobre indireção para tipos diferentes:
int *pi;
short *ps;
ps = pi; /* Now generates warning */
O compilador Microsoft C também gera avisos diferenças no início de sessão.Por exemplo:
signed int *pi;
unsigned int *pu
pi = pu; /* Now generates warning */
Tipo de void as expressões são avaliadas com efeitos colaterais.Você não pode usar o valor (inexistente) de uma expressão que tem um tipo void em qualquer forma, nem pode converter um void a expressão (por conversão implícita ou explícita) a 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.
De acordo 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.
Específicos do Microsoft final
Você pode criar especificadores de tipo adicionais com typedef declarações, conforme descrito em Typedef declarações.Consulte Armazenamento de tipos básicos para obter informações sobre o tamanho de cada tipo.