Ein Typcast ist im Grunde eine Umwandlung von einem Typ in einen anderen. Es gibt zwei Arten der Typkonvertierung:

  1. Implizite Typkonvertierung Auch bekannt als „automatische Typkonvertierung“.
    • Wird vom Compiler selbst durchgeführt, ohne externen Trigger durch den Benutzer.
    • Findet im Allgemeinen statt, wenn in einem Ausdruck mehr als ein Datentyp vorhanden ist. In einer solchen Bedingung findet eine Typkonvertierung (Type Promotion) statt, um Datenverluste zu vermeiden.
    • Alle Datentypen der Variablen werden auf den Datentyp der Variable mit dem größten Datentyp hochgestuft.
      bool -> char -> short int -> int ->
      
      unsigned int -> long -> unsigned ->
      
      lang lang -> Float -> doppelt -> lang doppelt
      
    • Bei impliziten Konvertierungen können Informationen verloren gehen, Zeichen können verloren gehen (wenn signed implizit in unsigned konvertiert wird) und es kann zu einem Überlauf kommen (wenn long long implizit zu float konvertiert wird).

    Beispiel für implizite Typumwandlung:




    // An example of implicit conversion
      
    #include <iostream>
    using namespace std;
      
    int main()
    {
        int x = 10; // integer x
        char y = 'a'; // character c
      
        // y implicitly converted to int. ASCII
        // value of 'a' is 97
        x = x + y;
      
        // x is implicitly converted to float
        float z = x + 1.0;
      
        cout << "x = " << x << endl
             << "y = " << y << endl
             << "z = " << z << endl;
      
        return 0;
    }
    Ausgabe:
    x = 107
    y = a
    z = 108
    
  2. Explizite Typkonvertierung : Dieser Vorgang wird auch Typumwandlung genannt und ist benutzerdefiniert. Hier kann der Benutzer das Ergebnis in einen bestimmten Datentyp umwandeln.

    In C++ kann dies auf zwei Arten erfolgen:

    • Konvertieren durch Zuweisung: Dies geschieht durch die explizite Angabe des gewünschten Typs vor dem Ausdruck in Klammern. Dies kann auch als gewaltsames Werfen angesehen werden.

      Syntax:



      (Typ) Ausdruck

      wobei Typ den Datentyp angibt, in den das Endergebnis konvertiert wird.

      Beispiel:




      // C++ program to demonstrate
      // explicit type casting
        
      #include <iostream>
      using namespace std;
        
      int main()
      {
          double x = 1.2;
        
          // Explicit conversion from double to int
          int sum = (int)x + 1;
        
          cout << "Sum = " << sum;
        
          return 0;
      }
      Ausgabe:
      Summe = 2
      
    • Konvertierung mit Cast-Operator: Ein Cast-Operator ist ein unärer Operator , der die Konvertierung eines Datentyps in einen anderen Datentyp erzwingt.
      C++ unterstützt vier Casting-Typen:
      1. Statische Besetzung
      2. Dynamische Besetzung
      3. Konstante Besetzung
      4. Besetzung neu interpretieren

          Beispiel:




          #include <iostream>
          using namespace std;
          int main()
          {
              float f = 3.5;
            
              // using cast operator
              int b = static_cast<int>(f);
            
              cout << b;
          }
          Ausgabe:
          3
          

Vorteile der Typkonvertierung:

  • Dies geschieht, um bestimmte Merkmale von Typhierarchien oder Typdarstellungen zu nutzen.
  • Es hilft, Ausdrücke zu berechnen, die Variablen verschiedener Datentypen enthalten.