Typumwandlung Teil 1
Teil des Abschnitts Grundlagen der C-Journey von Coddy. Lektion 13 von 63.
Mit Typumwandlungen kannst du in C einen Wert von einem Datentyp in einen anderen umwandeln. Das ist nützlich, wenn du Operationen mit unterschiedlichen Datentypen ausführen musst.
Es gibt zwei Hauptarten der Typumwandlung:
- Implizite Typumwandlung (automatisch)
- Explizite Typumwandlung (manuell)
Beginnen wir mit der impliziten Typumwandlung:
Implizite Typumwandlung erfolgt automatisch, zum Beispiel, wenn du einer Variable eines größeren Datentyps einen Wert eines kleineren Datentyps zuweist:
int num = 10;
double decimal_num;
// Implizite Typumwandlung von int zu double
decimal_num = num;Nach der Ausführung des obigen Codes hat decimal_num den Wert 10.0
Diese Konvertierung ist sicher, weil ein double alle möglichen Werte eines int speichern kann, ohne Daten zu verlieren.
Häufige implizite Umwandlungspfade:
- char → int → long → float → double
Beim Schritt von long zu float kann Präzision verloren gehen: Ein float kann nicht jeden long-Wert exakt speichern, daher wird 123456789 zu 123456792.0.
Schauen wir uns nun die explizite Typumwandlung an:
Eine explizite Typumwandlung erfolgt manuell, indem du den Zieldatentyp in Klammern vor den Wert schreibst, den du umwandeln möchtest. Verwende sie, wenn du von einem größeren zu einem kleineren Datentyp umwandelst, wobei Daten verloren gehen können:
double decimal_num = 5.65;
int num;
// Explizite Typumwandlung von double zu int
num = (int)decimal_num;Nach der Ausführung des obigen Codes hat num den Wert 5.
Beachte, dass der Dezimalteil beim Casten von double zu int abgeschnitten (nicht gerundet) wird. Die Syntax für explizites Casten lautet:
(target_type) valueC würde diese Konvertierung auch ohne den Cast durchführen: num = decimal_num; ergibt dieselbe 5. Da bei der Konvertierung Daten verloren gehen können, macht das Schreiben des Casts dies sichtbar und zeigt dem Compiler, dass du dir des möglichen Datenverlusts bewusst bist.
Aufgabe
EinfachSchreibe ein Programm, das:
- eine double-Variable
resultdeklariert und ihr den Wert 5.65 zuweist - eine int-Variable
gradedeklariert - den Wert von
resultmithilfe einer expliziten Typumwandlunggradezuweist
Die Zeile unter deinem Code gibt grade mit der Meldung "The grade is: " aus.
Probier es selbst
double result = 5.65;
int grade;
// Verwende einen expliziten Cast, um result (double) in grade (int) umzuwandeln
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
2Variablen
DatentypenGanzzahlGleitkommazahl – DoubleZeichenBoolesche WerteKonstantenprintf-GrundlagenRegeln für die Benennung von VariablenTypumwandlung Teil 1Typumwandlung Teil 2Wiederholungsaufgabe3Operatoren
Arithmetische OperatorenModulo-OperatorInkrement/DekrementZuweisungsoperatorenVergleichsoperatorenLogische Operatoren Teil 1Logische Operatoren Teil 2Logische Operatoren Teil 3Wiederholungs-ChallengeÜbe selbstständig: Online-C-Compiler