Konwersja typów, część 1
Część sekcji Podstawy ścieżki C++ w Coddy. Lekcja 14 z 74.
Rzutowanie typów to proces konwertowania wartości z jednego typu danych na inny.
W C++ możemy konwertować liczby całkowite na liczby zmiennoprzecinkowe, liczby zmiennoprzecinkowe na liczby całkowite i nie tylko. Istnieją dwa rodzaje rzutowania: niejawne (automatyczne) i jawne (ręczne).
Na przykład Integer to Double:
Rzutowanie niejawne (automatyczne):
int number = 5;
double decimal = number; // automatycznie staje się 5.0
// z obliczeniem
int x = 7;
double result = x / 2.0; // result wynosi 3.5Uwaga: Gdy dzielisz dwie wartości typu int, C++ wykonuje : część dziesiętna jest odrzucana. Na przykład 7 / 2 daje 3, a nie 3.5. Aby uzyskać wynik dziesiętny, co najmniej jeden operand musi być typu double (np. 7 / 2.0 daje 3.5).
Jawne (ręczne) rzutowanie Double to Integer:
double decimal = 9.7;
int number = (int) decimal; // staje się 9 (część ułamkowa jest odrzucana)
// z obliczeniem
double price = 19.99;
int roundedPrice = (int) price; // staje się 19Preferowany współczesny styl C++: Zamiast rzutowania w stylu C (int) decimal lepiej używać static_cast<>(), które jest bezpieczniejsze i wyraźniej określa Twoje intencje:
double decimal = 9.7;
int number = static_cast<int>(decimal); // przyjmuje wartość 9 (część ułamkowa zostaje odcięta)
double price = 19.99;
int roundedPrice = static_cast<int>(price); // przyjmuje wartość 19Uwaga: Zarówno (int) value, jak i static_cast<int>(value) dają tutaj ten sam wynik, ale static_cast<>() to zalecane podejście we współczesnym C++, ponieważ wyraźnie pokazuje konwersję i jest sprawdzane przez kompilator.
Wyzwanie
PoczątkującyNapisz program w C++, który demonstruje rzutowanie typów. Wykonaj następujące czynności:
Rzutuj zmienną price na typ int i zapisz wynik w nowej zmiennej o nazwie intPrice.
Spróbuj swoich sił
#include <iostream>
int main() {
// Zadeklaruj i zainicjalizuj zmienne
double price = 99.99;
int intPrice = ?; // Jawna konwersja typu z double na int
// Wypisz wartości
std::cout << "Price: " << price << std::endl;
std::cout << "Int Price: " << intPrice << std::endl;
return 0;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory — część 1
Operatory arytmetyczneOperator moduloInkrementacja/dekrementacjaPostinkrementacja/postdekrementacjaSkrócone operatory arytmetyczneOperatory porównaniaPorównywanie ciągów znaków7Podstawy wejścia/wyjścia
Instrukcja coutInstrukcja cinWczytywanie ciągu znakówPowtórka — do 120Powtórka — prawda czy fałsz3Zmienne, część 2
Deklarowanie typówKonwencje nazewnictwaPowtórka — inicjalizacja zmiennychKonwersja typów, część 1Konwersja typów, część 26Podejmowanie decyzji
Instrukcja ifIf - elseInstrukcja switchOperator warunkowyPowtórzenie: if - elseZagnieżdżone if - elsePoćwicz samodzielnie: Kompilator C++ online