Menu
Coddy logo textTech

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 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) value

Ponieważ podczas tej konwersji mogą zostać utracone dane, C wymaga, aby wykonać ją jawnie. Dzięki temu informujesz kompilator, że masz świadomość potencjalnej utraty danych.

challenge icon

Wyzwanie

Łatwy

Napisz program, który:

  1. Deklaruje zmienną typu double result i przypisuje jej wartość 5.65
  2. Deklaruje zmienną typu int grade
  3. Przypisuje wartość result do grade przy użyciu jawnego rzutowania
  4. Wyświetla wartość grade za 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;
}
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