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 niejawnego rzutowania:
Rzutowanie niejawne odbywa się automatycznie podczas konwersji z mniejszego typu danych na większy:
int num = 10;
double decimal_num;
// Niejawna konwersja z int na double
decimal_num = num;Po wykonaniu powyższego kodu decimal_num będzie mieć wartość 10.0
To działa, ponieważ typ double może przechowywać wszystkie możliwe wartości typu int bez utraty danych. Konwersja jest bezpieczna, więc C wykonuje ją automatycznie.
Typowe ścieżki niejawnego rzutowania:
- char → int → long → float → double
Przyjrzyjmy się teraz jawnemu rzutowaniu typów:
Jawne rzutowanie wykonuje się ręcznie, umieszczając docelowy typ danych w nawiasach przed wartością, którą chcesz przekonwertować. Jest to konieczne 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
Zwróć uwagę, że część dziesiętna jest obcinana (a nie zaokrąglana) podczas rzutowania z typu double na int. Składnia jawnego rzutowania to:
(target_type) valuePonieważ podczas tej konwersji mogą zostać utracone dane, C wymaga, aby wykonać ją jawnie. Dzięki temu informujesz kompilator, że masz świadomość potencjalnej utraty danych.
Wyzwanie
ŁatwyNapisz program, który:
- Deklaruje zmienną typu double
resulti przypisuje jej wartość 5.65 - Deklaruje zmienną typu int
grade - Przypisuje wartość
resultdogradeprzy użyciu jawnego rzutowania - Wyświetla wartość
gradeza pomocą printf z komunikatem "The grade is: "
Spróbuj swoich sił
#include <stdio.h>
int main() {
double result = 5.65;
int grade;
// Użyj jawnego rzutowania, aby przekonwertować result (double) na grade (int)
printf("The grade is: %d\n", grade);
return 0;
}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