Podręcznik
Wersja podręcznika: 1.0
Data publikacji: 01.01.2022 r.
5. Typy złożone
5.5. Jawne rzutowanie typów
Na koniec tego rozdziału chciałbym wrócić do zagadnienia rzutowania typów w języku C++. Czasami to rzutowanie odbywa się w sposób niejawny i niewidoczny dla programisty, przy czym dzieje się to głównie w obrębie typów użytkownika (klas) znajdujących się w jednej hierarchii, lub też w obrębie typów arytmetycznych. Szczególnie często sytuacja taka ma miejsce w przypadku obliczania wyrażeń arytmetycznych. W tym przypadku C++ kieruje się szlachetną zasadą przyjmowania jako typu wynikowego tego, który ma największą dokładność (żeby nie groziła utrata danych). Tak więc jak dodajemy short do int, to wynik będzie int, jak dzielimy int przez double wynik będzie double …. wszystko pięknie, tylko jak myślicie, jaka wartość będzie w zmiennej x po wykonaniu poniższego kodu?
double x = 1 / 2;
Wydawałoby się że powinno być 0.5 a tu niespodzianka … w x zostanie zapamiętane 0. Liczby 1 i 2 są liczbami całkowitymi, więc wynik ich podzielenia też będzie liczbą całkowitą. A operacja przypisania jest operacją kolejną w stosunku do dzielenia … dopiero podczas przypisania nastąpi niejawne rzutowanie int na double.