Konwersja typów — część 1
Część sekcji Podstawy ścieżki C w Coddy. Lekcja 13 z 63.
Rzutowanie typów w C pozwala przekształcić wartość z jednego typu danych na inny. Jest to przydatne, gdy trzeba wykonywać operacje na różnych typach danych.
Istnieją dwa główne rodzaje rzutowania typów:
- Rzutowanie niejawne (automatyczne)
- Rzutowanie jawne (ręczne)
Zacznijmy od niejawnej konwersji typów:
Rzutowanie niejawne odbywa się automatycznie, na przykład gdy przypisujesz wartość z typu danych o mniejszym zakresie do zmiennej o większym zakresie:
int num = 10;
double decimal_num;
// Niejawna konwersja typu int na double
decimal_num = num;Po wykonaniu powyższego kodu zmienna decimal_num będzie miała wartość 10.0
Ta konwersja jest bezpieczna, ponieważ typ double może przechowywać wszystkie możliwe wartości typu int bez utraty danych.
Typowe ścieżki niejawnej konwersji:
- char → int → long → float → double
Etap konwersji z long na float może prowadzić do utraty precyzji: typ float nie może dokładnie przechować każdej wartości typu long, więc 123456789 staje się 123456792.0.
Teraz przyjrzyjmy się jawnemu rzutowaniu typów:
Jawne rzutowanie wykonuje się ręcznie, umieszczając typ danych docelowego typu w nawiasach przed wartością, którą chcesz przekonwertować. Używaj go podczas konwersji z większego typu danych na mniejszy, gdy może dojść do utraty danych:
double decimal_num = 5.65;
int num;
// Jawne rzutowanie z double na int
num = (int)decimal_num;Po wykonaniu powyższego kodu num będzie mieć wartość 5
Zauważ, że część dziesiętna jest obcinana (a nie zaokrąglana) podczas rzutowania z typu double na int. Składnia jawnego rzutowania wygląda następująco:
(target_type) valueC również wykonałby tę konwersję bez rzutowania: num = decimal_num; daje tę samą wartość 5. Ponieważ konwersja może spowodować utratę danych, zapisanie rzutowania sprawia, że jest ona widoczna, i informuje kompilator, że masz świadomość potencjalnej utraty danych.
Wyzwanie
ŁatwyNapisz program, który:
- Deklaruje zmienną typu double
resulti ustawia jej wartość na 5.65 - Deklaruje zmienną typu int
grade - Przypisuje wartość
resultdogradeza pomocą jawnego rzutowania
Wiersz poniżej twojego kodu wyświetla grade z komunikatem "The grade is: ".
Spróbuj swoich sił
double result = 5.65;
int grade;
// Użyj jawnego rzutowania, aby przekonwertować result (double) na grade (int)
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
2Zmienne
Typy danychLiczby całkowiteLiczby zmiennoprzecinkowe — float i doubleZnakiWartości logiczneStałePodstawy printfZasady nazewnictwa zmiennychKonwersja typów — część 1Konwersja typów — część 2Wyzwanie podsumowujące3Operatory
Operatory arytmetyczneOperator moduloInkrementacja/dekrementacjaOperatory przypisaniaOperatory relacyjneOperatory logiczne — część 1Operatory logiczne — część 2Operatory logiczne — część 3Wyzwanie podsumowującePoćwicz samodzielnie: Kompilator C online