WikiDer > Typumwandlung
In dem Informatik ist ein Typumwandlung (Gespenstisch.: Typbesetzung) ein Operation das ist ein Stück Daten von einem bestimmten Datentyp konvertiert in einen anderen Datentyp.
Was ist es
Beim Schreiben eines Computerprogramms in einer stark typisierten Sprache kommt es häufig vor, dass eine Typisierung erforderlich ist. Ein einfaches Beispiel in der Sprache C.
int i = 1;float f;f = (float)i;
Viele Programmiersprachen haben eine Vielzahl von numerischen Typen, die alle ineinander umgewandelt werden können. Dies kann direkt oder über einen anderen Typ erfolgen. Die Typkonvertierung geht jedoch weit darüber hinaus. Auch Umwandlungen von numerisch in Zeichen oder Strings sind möglich und umgekehrt, wobei letzteres oft nicht als Typecast bezeichnet wird, sondern Parsing.
Es gibt formal zwei Arten von Typecast:
- der, bei dem die Daten anders werden interpretiert.
- diejenigen, bei denen die Daten tatsächlich in etwas anderes umgewandelt werden.
Ein Typecast des ersten Typs umfasst normalerweise ganze Zahlen unterschiedlicher Länge. Ein 4-Byte-Integer-Typ wird beispielsweise zu wordt Besetzung in einen 2-Byte-Ganzzahltyp. Dies erzeugt oft a Warnung vom Compiler, da Informationen verloren gehen können.
Eine andere Kategorie von Typumwandlungen der ersten Art besteht darin, dass Objekte in eine Klasse umgewandelt werden, von der sie abgeleitet sind. Also zum Beispiel ein Objekt vom Typ Dichtung wird in Typ umgewandelt Säugetier. Oder der Typ Geduldig wird in Typ umgewandelt Person.
Andernfalls handelt es sich um eine Typumwandlung zweiter Art. Die Umwandlung der Informationen erfolgt mit einer dafür geschriebenen Funktion. Diese Funktion ist oft in der Programmiersprache aus der Systembibliothek enthalten, die mit dem Compiler geliefert wird. Falls die Sprache interpretiert wird, ist dies fest in den Interpreter integriert.
Es ist auch möglich, dass der Programmierer selbst eine Typkonvertierungsfunktion schreibt. Beispiele umfassen die folgenden Funktionen.
toDate("12-06-1965")toString(myObject)Diese Art von Feature wird oft nicht als Typecast verstanden. Der Grund dafür hat hauptsächlich mit der Syntax der Sprache zu tun, also der Tatsache, dass es sich nur um Funktionen und nicht um eine spezielle Typecast-Konstruktion handelt.
Syntax in C( )
Wie bereits erwähnt, spielt die Sprachsyntax bei Typecasts eine wichtige Rolle. Einige Sprachen, wie z Javascript und VBScript, haben überhaupt keine Typumwandlungen, weil sie schwach typisiert sind. Eine Sprache wie C kennt Typecasts mit einer Syntax wie oben. Im C diese Syntax wurde um eine Notation erweitert, die einer Funktion ähnelt, außer dass der Funktionsname einem Typnamen entspricht.
int i = 1;float f;String s; // String ist hier eine benutzerdefinierte Klasse = float(i);s = String(i);
Aufgrund der Kompatibilität mit C werden beide Notationen für die Basistypen unterstützt.
Diese Notation in wahrscheinlich von Stroustrup eingeführt, um es von einem Typecast des ersten Typs zu unterscheiden, für den jetzt die alte Notation gedacht ist.
Säugetier = (Säugetier)Robbe;Vertebraten = (Wirbel)Robbe;Tier = (Tier)Robbe;Tier = (Tier)Wirbeltier;
Implizite Typumwandlung
Viele Sprachen unterstützen bis zu einem gewissen Grad implizite Typumwandlungen. In C ist es beispielsweise möglich, auch ohne Warnung des Compilers zu schreiben.
int i = 1;float f;f = i;Tier = Seehund;
Einige Sprachen fühlen sich damit weniger wohl, aber implizite Besetzungen sind in fast jeder Sprache einigermaßen erlaubt. Es ist ein Kompromiss des Sprachdesigners zwischen Sicherheit, Lesbarkeit und der Bequemlichkeit des Programmierers.