Rzutowanie czyli konwersja typów.
Rzutowanie, czyli konwersja typów, to nic innego jak próba zamiany typu zmiennej na inny typ. Jest jednak pewien haczyk. O ile można rzutować wartość z typu o mniejszej precyzji do typu o większej precyzji o tyle nie można niejawnie rzutować typu o większej precyzji na typ o mniejszej precyzji.
Pokażę to na dwóch prostych przykładach.
W pierwszym przykładzie postaram się rzutować wartość zmiennej x typu int na typ double a w drugim przykładzie postaram się uzyskać odwrotny efekt czyli rzutować wartość zmiennej x typu double na typ int.
Rzutowanie wartości zmiennej x typu int na zmienną y typu double. Takie rzutowanie przedstawia kod na rysunku poniżej.
Wynikiem uruchomienia takiego programu będzie wyświetlenie na ekranie wartości 100, co jest wynikiem prawidłowym.
Kolejne zadanie to rzutowanie wartości zmiennej x typu double na zmienną y typu int. Takie rzutowanie przedstawia kod na rysunku poniżej.
Przy próbie uruchomienia programu otrzymujemy komunikat „There were build errors. Would You like to continue and run the last successful build. Yes/No?” co oznacza, że nie można skompilować naszego program z powodu błędów w kodzie.
Jak najedziemy kursorem nad podkreślone x otrzymamy komunikat „Cannot implicitly convert type ‘double’ to ‘int’. An explicit conversion exists (are you missing a cart?)”. To oznacza, że trzeba zadeklarować jawną konwersję, co przedstawia rysunek 10.3.
Widzimy, że Visual Studio nie pokazuje żadnych błędów więc powinniśmy mieć możliwość uruchomienia naszego programu. Więc do dzieła, uruchamiamy go przyciskiem F5. Wynikiem działania naszego programu jest liczba 10, co obrazuje następny rysunek.
Nasuwa się pytanie, ale dlaczego 10 a nie 10,5 jak było zadeklarowane w zmiennej typu double. Odpowiedź jest prosta, bo rzutowaliśmy zmienną o typie o większej precyzji na zmienną o typie o mniejszej precyzji. Zmienna typu int nie może przechowywać wartości zmiennoprzecinkowych, więc rzutując taką wartość tracimy jej precyzję i wynik jest, w naszym przypadku, zaokrąglany do liczb całkowitych.