Jason. Cała informatyka w jednym miejscu!

Hasło z jakim równie często możesz mieć do czynienia podczas pisania kodu, jest rzutowanie typu. Typu danych ma się rozumieć. Co to za sztuczka i jak z tego korzystać z głową, zapraszam po szczegóły do środka!

DOWIEDZ SIĘ NA CZYM POLEGA RZUTOWANIE TYPU!

Konwersja jednego typu danych na wskazany przez nas, to jest "type casting" czyli nasze rzutowanie. Polega to na nakazaniu kompilatorowi bądź interpreterowi, aby daną zmienną "traktował" jak inny typ niż jaki reprezentuje w rzeczywistości. Czasami się to udaje gdy jest to sensowne, a gdy strzelimy głupotę, to taki sam rezultat czeka nasz program (zgłoszenie wyjątku albo "wyrzutka" z procesu). Sensowne mam na myśli takie rzutowanie typu jak przesiadka z "int" na typ "float" albo z obiektu typu podrzędnego na obiekt typu nadrzędnego (polimorfizm). Takie coś będzie OK, ale jak spróbujecie rzutować strukturę lub unię na łańcuch znaków, to powstanie "wielkie G" ;).

Są jednak takie konwersje, w których jest możliwa przeróbka typu jednak nie we wszystkich okolicznościach. Czy dałoby się skonwertować łańcuch znaków na liczbę zmiennoprzecinkową? Dałoby się. A kiedy nie? Kiedy łańcuch zawierałby jakieś znaki nienumeryczne np. słowo "parasol". Wtedy już będzie klops! W podanej sytuacji często lepiej jest zastąpić rzutowanie typu metodą zwracającą typ danych jaki nas interesuje (np. w Javie jest metoda "Double.parseDouble", która zajmuje się PRÓBĄ skonwertowania łańcucha znaków na typ "double").

KOD ŹRÓDŁOWY

Mały przykład w języku C jak zawsze, żeby zobrazować użycie w kodzie i zamykam temat:

int i = 34;
float f = (float)i;

printf("Integer: %d\n", i);
printf("Float: %f", f);

Rzutowanie typu w kodzie źródłowym najczęściej wykonuje się przez zapis pożądanego typu w nawiasie w charakterze przedrostka nazwy zmiennej reprezentującej inny typ:

(float)i;

Najczęściej czyt. w niektórych językach programowania może obowiązywać inna składnia ;). Na wyjściu ujrzymy wyniki dwóch liczb: jedna przyjmie wartość 34, a druga 34.0. To pójdzie bez problemu, gdyż liczba do liczby może co najwyżej "obciąć" część ułamkową gdy rzutujemy ze zmiennoprzecinkowej do całkowitej (kolego, zapraszam tutaj jeśli potrzebujesz wyjaśnień). Gdy spróbujemy zrobić rzutowanie typu kompletnie bez sensu, to równie bezsensownie zachowa się program podczas wykonywania instrukcji.


Czy trzeba coś jeszcze wyjaśniać? Chyba nie...W razie czego zawsze mogę uzupełnić o dodatkowe informacje. Wystarczy dać znać na moim Instagramie!

PODOBNE ARTYKUŁY