www.wikidata.de-de.nina.az
Als Typumwandlung englisch type conversion oder type casting kurz cast wird in der Informatik die Umwandlung eines Datums von einem Datentyp in einen anderen bezeichnet Dadurch werden Typverletzungen vermieden die durch mangelnde Zuweisungskompatibilitat entstehen Hierbei unterscheidet man zwischen expliziter und impliziter Typumwandlung werterhaltender und verlustbehafteter Typumwandlung benutzerdefinierter und vordefinierter built in Typumwandlung Bei der expliziten Typumwandlung wird die Typumwandlung im Programmcode ausdrucklich hingeschrieben Je nach Typisierung der verwendeten Programmiersprache kann das Fehlen der expliziten Angabe der Typumwandlung einen Laufzeit oder Compilezeit Fehler zur Folge haben Im Unterschied dazu erscheinen implizite Typumwandlungen nicht im Quelltext Sie erfolgen entweder nach Vorschriften die durch die Programmiersprache vorgegeben sind oder gemass einem vom Programmierer an einer anderen Stelle im Quelltext festgelegten Verfahren Eine Typumwandlung ist werterhaltend wenn alle im Ausgangstyp darstellbaren Werte auch im Zieltyp darstellbar sind so dass sich der Wert also das umgewandelte Datum auf keinen Fall andert Anderenfalls nennt man sie verlustbehaftet Implizite Typumwandlungen konnen eine Fehlerquelle sein indem versehentlich eine verlustbehaftete Umwandlung verursacht wird Deshalb erlauben viele Programmiersprachen eine implizite Typumwandlung nur dann wenn sie werterhaltend ist Inhaltsverzeichnis 1 Typerweiterung und Typeinschrankung 2 Beispiele 2 1 Java 2 2 C 2 3 C 3 Siehe auch 4 WeblinksTyperweiterung und Typeinschrankung BearbeitenDa unterschiedliche Datentypen oftmals unterschiedliche Wertebereiche haben konnen bei der Typumwandlung Typerweiterungen also Vergrosserungen des Wertebereichs oder Typeinschrankung also Verkleinerungen des Wertebereichs vorkommen Wird beispielsweise ein Integer mit einer Grosse von 16 Bit in einen 32 Bit grossen Integer umgewandelt handelt es sich um eine Typerweiterung Im umgekehrten Fall ware dies eine Typeinschrankung Beispiele BearbeitenJava Bearbeiten Explizite Typumwandlung int i 100 byte b byte i Implizite Typumwandlung int j 12 double d j Bei Zeichenketten wird beim expliziten umwandeln String valueOf x bzw bei Objekten x toString aufgerufen int i 164 String str String valueOf i Implizite Typumwandlung bei Zeichenketten int i 164 String str i Anwendungsbeispiel der expliziten Typumwandlung int g 9 int n 2 double e g n e ist nicht 4 5 sondern 4 0 da eine Ganzzahldivison erfolgt deren Ergebnis 4 ist Anschliessend findet erst die Typumwandlung auf double statt und e weist den Wert 4 0 auf Um dieses Verhalten zu umgehen kann man eine explizite Typumwandlung benutzen double y g double n C Bearbeiten Geraet geraet new Computer Bildschirm bildschirm Bildschirm geraet Wenn geraet is Bildschirm stat type geraet is Bildschirm sonst wird eine Exception geworfen bildschirm geraet as Bildschirm Wenn geraet is Bildschirm bildschirm Bildschirm geraet sonst bildschirm null geraet null bildschirm geraet as Bildschirm bildschirm null C Bearbeiten Geraet geraet new Computer Bildschirm bildschirm static cast lt Bildschirm gt geraet Kompiliert nur wenn entweder Geraet or Bildschirm von der anderen oder derselben Klasse abgeleitet ist bildschirm dynamic cast lt Bildschirm gt geraet Wenn geraet is Bildschirm dann bildschirm Bildschirm geraet sonst bildschirm nullptr Bildschirm amp bildschirmR static cast lt Bildschirm amp gt geraet Wie oben aber eine Exception wird geworfen wenn ein nullptr zuruckgegeben wird geraet nullptr bildschirm dynamic cast lt Bildschirm gt geraet bildschirm nullptr delete geraet gibt die Ressourcen frei Implizite Typumwandlung als Fehlerquelle int main int a 4 unsigned b 5 if a gt b cout lt lt Fehler lt lt endl Hier wird a implizit von int nach unsigned gewandelt und da im Zieltyp keine negativen Zahlen darstellbar sind andert sich der Wert Das Resultat ist laut den Regeln der Ganzzahlumwandlung kongruent zu 4 modulo der Zahl der im vorzeichenlosen Zieltyp darstellbaren Werte also 2 32 4 displaystyle 2 32 4 nbsp wenn unsigned 32 Bit lang ist Siehe auch BearbeitenKonvertierung Informatik TypverletzungWeblinks BearbeitenJava Language Specification Conversions and Promotions Type conversion in Java with Examples Casting and type conversions C Programming Guide C Type Casting The WATs of JavaScript Abgerufen von https de wikipedia org w index php title Typumwandlung amp oldid 237795528