Dienstag, 2. Juli 2024
17.1 C
Berlin

Casting – Typumwandlung von Variablen in C++

Wie Sie aus dem letzten Kapitel wissen, wird der Type einer Variablen bei der Deklaration festgelegt. Manchmal ist es jedoch erforderlich, einen Wert in einen anderen Typ zu konvertieren. In C++ wird dieses Verfahren der Typumwandlung Type-Casting genannt. Hierfür stehen zwei unterschiedliche Verfahren zur Verfügung:

 

 

  • Implizite Typumwandlung – In diesem Fall nimmt der Compiler eine automatische Konvertierung von einem zum anderen Datentyp vor. Das geschieht zum Beispiel wenn Sie einer int-Variablen einen float-Wert oder einer float-Variablen einen double-Wert zuweisen. Implizit hat hier die Bedeutung von „mit enthalten“.
  • Explizite Typumwandlung – Die Konvertierung des Datentyps wird explizit (ausdrücklich) vom Programmierer festgelegt.

[sc name=“adsense_InText_ad“]

Explizite Typumwandlung durch den static_cast-Operator

Anders als bei der impliziten Typumwandlung wird eine explizite Umwandlung im Programmcode vorgenommen. Die einfache Syntax hierfür lautet:

variablen-name = (zieltyp) variablen-name;

Dies ist die herkömmliche Form des Casting, wie es in der Programmiersprache C vorgenommen wird. Eine neuere Alternative in C++ benutzt eckige Klammern und den static_cast-Operator, wie in diesem Beispiel:

variablen-name = static_cast <zieltyp> variablen-name;

In der neueren Version lassen sich Typumwandlungen im Quellcode einfacher identifizieren außerdem führen die runden Klammern in komplexen Ausdrücke eher zu Verwirrungen. Die neue Form ist der alten vorzuziehen, obwohl diese immer noch weit verbreitet ist.

Eine Typumwandlung ist oft erforderlich um ein genaues arithmetisches Ergebnis zu erhalten. Wie Sie wissen, produziert die Division eines Integer-Wertes durch einen anderen ein Integer-Ergebnis. Mit anderen Worten, wenn Sie 7 durch 2 teilen erhalten Sie eine 3, der Rest wird nicht gerundet sondern abgeschnitten. Um das genaue Ergebnis zu erzielen muss das Ergebnis deshalb in einen anderen Datentyp, wie zum Beispiel float, umgewandelt werden.

float ergebnis = (float) 7/2;

oder

float ergebnis = static_cast <float> 7/2;

In diesem Fall reicht es auch aus, den ersten Operatoren in einen anderen Datentyp umzuwandeln, so dass der Ausdruck auch so geschrieben werden kann:

float ergebnis = static_cast <float> (7)/2;

Würden Sie den Ausdruck (7/2) verwenden, würde zuerst eine arithmetische Division durchgeführt, das Ergebnis hinter dem Komma abgeschnitten und danach würde der Wert in eine float-Variable umgewandelt – ein Ergebnis, dass so nicht gewünscht ist.

Praxistipp: Handhaben Sie die explizite Typkonvertierung sehr vorsichtig, denn damit überschreiben Sie die implizite Typüberprüfung des Compilers.

 

Dieser Artikel ist Teil unseres kostenlosen Workshops “C++ Programmieren lernen” – Geeignet für Einsteiger und Fortgeschrittene. Machen auch Sie mit und lernen Sie in 50 Artikeln, wie Sie Programme selbst schreiben!

 

 

Artikelbild: Fotolia / bramgino

 

PC-Reparatur.Shop - Team
PC-Reparatur.Shop - Team
Wenn Sie Fragen oder Anregungen zu diesem Beitrag haben, wenden Sie sich bitte direkt über die E-Mail Adresse blog@pc-reparatur.shop an unser Team - Vielen Dank!
Bewertung des Artikels: 1 Stern2 Sterne3 Sterne4 Sterne5 Sterne

IN EIGENER SACHE

Ähnliche Artikel