Rzutowanie

SebaZ

Rzutowanie to jawna konwersja typów. Od niejawnej konwersji różni się tym, że stosujemy ją gdy może nastąpić utrata informacji, np. gdy rzutujemy liczbę zmiennoprzecinkową na całkowitą to część po przecinku zostanie utracona. Dlatego musimy zaznaczyć w programie, że chcemy dokonać konwersji i wiemy co robimy.

Najlepiej omówić to na przykładzie. Oto prosty kod źródłowy, który na pewno nie zostanie prawidłowo skompilowany:

double x = 55.5;
int y;

y = x; 

W tym przykładzie nie mogła nastąpić niejawna konwersja (kompilator zwróci błąd), ponieważ po przypisaniu Double x do zmiennej Int y zostanie utracona część danych (część po przecinku).

Aby wymusić na kompilatorze konwersje stosujemy rzutowanie. Przed zmienną w nawiasach umieszczamy typ, na jaki ma być przekonwertowany:

double x = 55.5;
int y;

y = (int) x; 

Rzutowaniem jest właśnie przypisanie danych w ten sposób: (int)x. W takim przypadku rzutujemy typ Int na Double, w wyniku czego zmienna y będzie posiadać wartość 55, jako już liczba całkowita Int.

Kiedy stosujemy rzutowanie?

Rzutowanie, czyli jawną konwersję stosujemy kiedy w wyniku konwersji może zostać utracona część danych. Więc np. z typu: int na short (short ma mniejszy zasięg) int na uint (uint nie może być liczbą ujemną) double na int (część ułamkowa zostanie utracona)

3 komentarzy

To jest taki ładny button: edytuj :)

Pasowałoby dodać coś o przekształceniu typu bezpośredniego do referencyjnego i na odwrót (boxing/unboxing)

Wzorowane na artykule Adama Boducha, z działu Delphi dot. tego samego tematu.