Conversões de conversão de tipo

Você pode usar conversões de tipos em estilo "cast" para converter tipos explicitamente.

Sintaxe

cast-expression:
unary-expression
( type-name ) cast-expression

type-name:
specifier-qualifier-list abstract-declaratoropt

type-name é um tipo e cast-expression é um valor a ser convertido nesse tipo. Uma expressão com uma conversão de tipo não é um valor l. A cast-expression é convertida como se tivesse sido atribuída a uma variável do tipo type-name. As regras de conversão para atribuições (descritas em Conversões de atribuição) também se aplicam às conversões de tipos. A tabela a seguir mostra os tipos que podem ser convertidos em qualquer tipo indicado.

Tipos de destino Possíveis fontes
Tipos integrais Qualquer tipo de inteiro ou tipo de ponto flutuante, ou ponteiro para um objeto
Ponto flutuante Qualquer tipo aritmético
Um ponteiro para um objeto ou void * Qualquer tipo inteiro, void *, um ponteiro para um objeto ou um ponteiro de função
Ponteiro de função Qualquer tipo integral, um ponteiro para um objeto ou um ponteiro de função
Uma estrutura, união ou matriz Nenhum
Tipo void Qualquer tipo

Qualquer identificador pode ser convertido no tipo void. No entanto, se o tipo especificado em uma expressão de conversão de tipo não for void, o identificador que está sendo convertido nesse tipo não poderá ser uma expressão void. Qualquer expressão pode ser convertida em void, mas uma expressão do tipo void não pode ser convertida em nenhum outro tipo. Por exemplo, uma função com o tipo de retorno void não pode ter o retorno convertido em outro tipo.

Uma expressão void * tem um ponteiro de tipo para void, não do tipo void. Se um objeto for convertido no tipo void, a expressão resultante não poderá ser atribuída a nenhum item. Da mesma forma, um objeto de conversão de tipo não é um valor l aceitável. Portanto, nenhuma atribuição pode ser feita a um objeto de conversão de tipo.

Seção específica da Microsoft

Uma conversão de tipo pode ser uma expressão de valor l, desde que o tamanho do identificador não seja alterado. Para obter informações sobre expressões l-value, consulte Expressões L-Value e R-Value.

Fim da seção específica da Microsoft

Você pode converter uma expressão no tipo void com uma conversão, mas a expressão resultante só poderá ser usada quando um valor não for necessário. Um ponteiro de objeto convertido em void * e de volta para o tipo original retornará ao seu valor original.

Confira também

Conversões de Tipo