Udostępnij za pośrednictwem


Konwersje rzutowania typów

Rzutowania typu umożliwiają jawne konwertowanie typów.

Składnia

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

type-name:
specifier-qualifier-listabstract-declaratorZdecydować

Jest type-name typem i cast-expression jest wartością, która ma zostać przekonwertowana na ten typ. Wyrażenie z rzutem typu nie jest wartością l. Element cast-expression jest konwertowany tak, jakby został przypisany do zmiennej typu type-name. Reguły konwersji przypisań (opisane w temacie Konwersje przydziałów) mają zastosowanie również do rzutowania typów. W poniższej tabeli przedstawiono typy, które można rzutować do dowolnego typu.

Typy docelowe Potencjalne źródła
Typy całkowite Dowolny typ liczb całkowitych lub typ zmiennoprzecinkowa lub wskaźnik do obiektu
Zmiennoprzecinkowy Dowolny typ arytmetyczny
Wskaźnik do obiektu lub void * Dowolny typ liczby całkowitej, void *, wskaźnik do obiektu lub wskaźnik funkcji
Wskaźnik funkcji Dowolny typ całkowity, wskaźnik do obiektu lub wskaźnik funkcji
Struktura, unia lub tablica Brak
Typ pustki Dowolny typ

Dowolny identyfikator można rzutować do void typu. Jeśli jednak typ określony w wyrażeniu rzutowania typu nie voidjest , identyfikator rzutowania na ten typ nie może być wyrażeniem void . Dowolne wyrażenie można rzutować na void, ale nie można rzutować wyrażenia typu void na inny typ. Na przykład funkcja z void typem zwrotnym nie może mieć rzutowania powrotnego do innego typu.

Wyrażenie void * ma wskaźnik typu na void, a nie typ void. Jeśli obiekt jest rzutowy do void typu, wynikowe wyrażenie nie może być przypisane do żadnego elementu. Podobnie obiekt rzutowania typu nie jest akceptowalną wartością l, więc nie można przypisania do obiektu rzutowania typu.

Specyficzne dla firmy Microsoft

Rzutowanie typu może być wyrażeniem l-wartości, o ile rozmiar identyfikatora nie zmienia się. Aby uzyskać informacje na temat wyrażeń l-value, zobacz Wyrażenia L-Value i R-Value.

END Microsoft Specific

Wyrażenie można przekonwertować na typ void za pomocą rzutowania, ale wyrażenie wynikowe może być używane tylko wtedy, gdy wartość nie jest wymagana. Wskaźnik obiektu przekonwertowany na void * i z powrotem do oryginalnego typu powróci do oryginalnej wartości.

Zobacz też

Konwersje typów