Typumwandlung (englisch Type Casting oder Type Conversion) wandelt einen Wert von einem Datentyp in einen anderen um – zum Beispiel eine Zeichenkette in eine Ganzzahl oder eine Wahrheitswert in eine Zahl. Jede Programmiersprache besitzt dafür eigene Regeln, denn nicht jede Umwandlung ist verlustfrei oder überhaupt erlaubt.
Implizite und explizite Umwandlung
Bei der impliziten Umwandlung (auch Coercion) konvertiert die Sprache automatisch, ohne dass der Entwickler etwas tun muss. Typisch ist das bei statisch typisierten Sprachen, wenn ein primitiver Datentyp in einen größeren umgewandelt wird. Die explizite Umwandlung (der Cast) verlangt dagegen eine sichtbare Anweisung im Quellcode.
# Python: explizite Umwandlung
zahl_text = "42"
zahl = int(zahl_text) # String -> Integer
komma = float(zahl) # Integer -> Float
als_text = str(komma) # Float -> String
In Java und C# schreibt man den Zieltyp in Klammern vor den Ausdruck:
// Java
double d = 9.7;
int i = (int) d; // 9 (Nachkommastellen werden abgeschnitten)
Wann Typumwandlung gefährlich wird
- Datenverlust: Beim Kürzen von
doubleaufintgehen Nachkommastellen verloren, bei sehr großen Zahlen auch Stellen der Ganzzahl selbst. - Unerwartete Ergebnisse: In JavaScript ergibt
"5" + 3den String"53","5" * 3aber die Zahl15– die Sprache entscheidet je nach Operator selbst. - Laufzeitfehler: Lässt sich ein Wert nicht umwandeln, wirft die Laufzeitumgebung eine Exception, etwa
ValueErrorin Python oderNumberFormatExceptionin Java.
Typumwandlung und Typsicherheit
Eng verwandt ist die Typsicherheit: Je strenger eine Sprache Umwandlungen kontrolliert, desto weniger Überraschungen treten auf. Moderne Sprachen wie Rust oder Go verlangen deshalb fast immer einen expliziten Cast, während Python und JavaScript großzügiger automatisch konvertieren.
Praxis-Tipps
- Vor der Umwandlung prüfen, ob der Wert überhaupt passt – bei Benutzereingaben immer mit Fehlerbehandlung arbeiten.
- Beim Casten von Booleans auf Zahlen an die Sprachkonvention denken (
True/1,False/0in Python und C#). - Deutliche Variablennamen wählen, damit klar ist, welcher Datentyp gemeint ist – das erspart spätere Casts.
Verwandte Grundlagen: Datentyp, Typsystem, Primitiver Datentyp, Konstante. Sprachreferenzen: Python-Befehle, Java-Befehle, C#-Befehle, Go-Befehle.