Partilhar via


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-declarator opt

type-name é um tipo e cast-expression é um valor que pode ser convertido nesse tipo. Uma expressão com uma conversão de tipo ("cast") não é um l- value. 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.

Conversões de tipos válidas

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 de 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 é void, o identificador que está sendo convertido nesse tipo não pode 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 seu retorno convertido em outro tipo.

Observe que uma expressão void * tem um ponteiro de tipo para void, não para o tipo void. Se um objeto é convertido no tipo void, a expressão resultante não pode ser atribuída a nenhum item. Do mesmo modo, um objeto de conversão de tipo não é um l-value aceitável; portanto, nenhuma atribuição pode ser feita a um objeto de conversão de tipo.

Específico da Microsoft

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

FIM de Específico da Microsoft

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

Consulte também

Conceitos

Conversões de tipo (C)