Menu
CoddyTech

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:

  1. Rzutowanie niejawne (automatyczne)
  2. 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) value

C 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.

challenge icon

Wyzwanie

Łatwy

Napisz program, który:

  1. Deklaruje zmienną typu double result i ustawia jej wartość na 5.65
  2. Deklaruje zmienną typu int grade
  3. Przypisuje wartość result do grade za 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)
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator C online