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 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.
Conversões de tipo 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 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.