Udostępnij za pośrednictwem


Konwersje rzutowania typów

Możesz użyć rzutowania typów, aby jawnie konwertować typy.

Składnia

  • cast-expression:
    wyrażenie jednoargumentowe

    ( type-name ) cast-expression

  • type-name:
    specifier-qualifier-list abstract-declarator opt

Type-name jest typem, a cast-expression jest wartością konwertowaną na ten typ.Wyrażenie o rzutowanym typie nie jest l-wartością.Cast-expression jest konwertowane, jakby było przypisane do zmiennej typu type-name.Reguły konwersji przypisań (opisane w Konwersje przypisań) dotyczą także rzutowania typów.Poniższa tabela pokazuje typy, które mogą być rzutowane na dowolny, podany typ.

Dozwolone rzutowanie typów

Typy docelowe

Potencjalne źródła

Typy całkowite

Dowolny typ całkowity lub zmiennoprzecinkowy albo wskaźnik do obiektu

Liczba zmiennoprzecinkowa

Dowolny typ arytmetyczny

Wskaźnik do obiektu lub (void *)

Dowolny typ całkowity, (void *), wskaźnik do obiektu lub wskaźnik do funkcji

Wskaźniki do funkcji

Dowolny typ całkowity, wskaźnik do obiektu lub wskaźnik do funkcji

Struktura, unia lub tablica

Brak

Typ void

Dowolny typ

Dowolny identyfikator może być rzutowany na typ void.Jednakże, jeśli typ określony w wyrażeniu rzutowania typu nie jest void, to identyfikator rzutowany na ten typ nie może być wyrażeniem void.Dowolne wyrażenie może być rzutowane na typ void, ale wyrażenie typu void nie może być rzutowane na żaden inny typ.Na przykład, funkcja zwracająca typ void nie może rzutować zwracanego typu na inny typ.

Zauważ, że wyrażenie void * ma wskaźnik do typu void, a nie typ void.Jeśli obiekt jest rzutowany na typ void, wynikowe wyrażenie nie może być przypisane do żadnego elementu.Podobnie, obiekt o rzutowanym typie nie jest dopuszczalną l-wartością, więc żadne przypisanie nie może zostać wykonane do obiektu o rzutowanym typie.

Specyficzne dla firmy Microsoft

Rzutowanie typu nie może być wyrażeniem l-wartości tak długo, jak nie zmienia się rozmiar identyfikatora.Aby uzyskać informacje dotyczące wyrażeń l-wartościowych, zobacz Wyrażenia l-wartościowe i p-wartościowe.

KONIEC informacji specyficznych dla firmy Microsoft

Za pomocą rzutowania możesz konwertować wyrażenie na typ void, ale wyrażenie wynikowe może być używane tylko tam, gdzie nie jest wymagana wartość.Wskaźnik do obiektu skonwertowany na void * i z powrotem do oryginalnego typu zwróci swoją oryginalną wartość.

Zobacz też

Koncepcje

Konwersje typu (C)