Type Casting Teil 1
Teil des Abschnitts Grundlagen der C++-Journey von Coddy — Lektion 14 von 74.
Type Casting ist der Prozess der Umwandlung eines Wertes von einem Datentyp in einen anderen.
In C++ können wir Integers in Doubles umwandeln, Doubles in Integers und mehr. Es gibt zwei Arten des Castings: implizites (automatisches) und explizites (manuelles) Casting.
Zum Beispiel Integer to Double:
Implizite (automatische) Typumwandlung:
int number = 5;
double decimal = number; // wird automatisch zu 5.0
// mit Berechnung
int x = 7;
double result = x / 2.0; // Ergebnis ist 3.5Hinweis: Beim Dividieren von zwei int-Werten führt C++ eine Ganzzahldivision durch — der Nachkommateil wird verworfen. Zum Beispiel ergibt 7 / 2 den Wert 3, nicht 3.5. Um ein Dezimalergebnis zu erhalten, muss mindestens ein Operand ein double sein (z. B. ergibt 7 / 2.0 den Wert 3.5).
Explizites (manuelles) Casting Double to Integer:
double decimal = 9.7;
int number = (int) decimal; // wird zu 9 (Nachkommastellen werden abgeschnitten)
// mit Berechnung
double price = 19.99;
int roundedPrice = (int) price; // wird zu 19Bevorzugter moderner C++-Stil: Anstelle des Casts im C-Stil (int) decimal ist es bessere Praxis, static_cast<>() zu verwenden, was sicherer ist und Ihre Absicht deutlicher zum Ausdruck bringt:
double decimal = 9.7;
int number = static_cast<int>(decimal); // wird zu 9 (Nachkommastellen werden abgeschnitten)
double price = 19.99;
int roundedPrice = static_cast<int>(price); // wird zu 19Hinweis: Sowohl (int) value als auch static_cast<int>(value) liefern hier das gleiche Ergebnis, aber static_cast<>() ist der empfohlene Ansatz in modernem C++, da es die Konvertierung deutlich sichtbar macht und vom Compiler geprüft wird.
Aufgabe
AnfängerSchreibe ein C++-Programm, das Type Casting demonstriert. Führe Folgendes aus:
Caste die Variable price in einen int und speichere das Ergebnis in einer neuen Variable namens intPrice.
Spickzettel
Type Casting konvertiert Werte von einem Datentyp in einen anderen.
Implizites (automatisches) Casting — geschieht automatisch:
int number = 5;
double decimal = number; // wird automatisch zu 5.0
int x = 7;
double result = x / 2.0; // Ergebnis ist 3.5 (int/int verwirft Dezimalstellen)Explizites (manuelles) Casting — C-Stil und modernes static_cast:
double price = 19.99;
int a = (int) price; // C-Stil: wird zu 19
int b = static_cast<int>(price); // modernes C++ bevorzugt: wird zu 19Hinweis: Das Casting eines double in einen int schneidet den Dezimalteil ab (verwirft ihn). static_cast<>() wird in modernem C++ aufgrund der Klarheit und Compilersicherheit bevorzugt.
Probier es selbst
#include <iostream>
int main() {
// Variablen deklarieren und initialisieren
double price = 99.99;
int intPrice = ?; // Explizite Typumwandlung von double zu int
// Werte ausgeben
std::cout << "Price: " << price << std::endl;
std::cout << "Int Price: " << intPrice << std::endl;
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorInkrement/DekrementPost-Inkrement/DekrementArithmetische AbkürzungenVergleichsoperatorenString-Vergleich7Eingabe/Ausgabe Grundlagen
cout-Anweisungcin-AnweisungString-EingabeWiederholung - Bis 120Wiederholung - Wahr oder Falsch3Variablen Teil 2
TypdeklarationNamenskonventionenWiederholung – Variablen initialisierenType Casting Teil 1Type Casting Teil 26Entscheidungsfindung
If-AnweisungIf - ElseSwitch-AnweisungBedingter OperatorWiederholung - If ElseVerschachtelte If - Else