logo

Typ Conversie in C++

Een typecast is in feite een conversie van het ene type naar het andere. Er zijn twee soorten typeconversie:

    Impliciete typeconversie Ook bekend als ‘automatische typeconversie’.
    • Wordt door de compiler zelf gedaan, zonder enige externe trigger van de gebruiker.
    • Vindt doorgaans plaats als er in een expressie meer dan één gegevenstype aanwezig is. In dergelijke omstandigheden vindt typeconversie (typepromotie) plaats om verlies van gegevens te voorkomen.
    • Alle gegevenstypen van de variabelen worden geüpgraded naar het gegevenstype van de variabele met het grootste gegevenstype.
       bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double>
    • Het is mogelijk dat bij impliciete conversies informatie verloren gaat, tekens kunnen verloren gaan (wanneer ondertekend impliciet wordt omgezet in niet-ondertekend) en er kan overflow optreden (wanneer long long impliciet wordt omgezet in float).

    Voorbeeld van type impliciete conversie:



    wat is alfabetnummer






    // An example of implicit conversion> > #include> 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;> }>



    >

    >

    Uitgang:

     x = 107 y = a z = 108>
    Expliciete typeconversie: dit proces wordt ook wel typecasting genoemd en wordt door de gebruiker gedefinieerd. Hier kan de gebruiker het resultaat typeren om het van een bepaald gegevenstype te maken.

    In C++ kan dit op twee manieren worden gedaan:

    • Omzetten per toewijzing: Dit wordt gedaan door het vereiste type expliciet te definiëren vóór de expressie tussen haakjes. Dit kan ook als krachtig gieten worden beschouwd.

      Syntaxis:

      (type) expression>

      waar type geeft het gegevenstype aan waarnaar het eindresultaat wordt geconverteerd.

      Voorbeeld:




      // C++ program to demonstrate> // explicit type casting> > #include> 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;> }>

      >

      >

      Uitgang:

       Sum = 2>
    • Conversie met behulp van de Cast-operator: Een Cast-operator is een unaire operator waardoor het ene gegevenstype wordt geconverteerd naar een ander gegevenstype.
      C++ ondersteunt vier soorten casting:

      1. Statische cast
      2. Dynamische cast
      3. Const Cast
      4. Herinterpreteer cast
        1. Voorbeeld:




          Java-teken naar int

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

          >

          >

          Uitgang:

           3>

Voordelen van typeconversie:

  • Dit wordt gedaan om te profiteren van bepaalde kenmerken van typehiërarchieën of typerepresentaties.
  • Het helpt bij het berekenen van uitdrukkingen die variabelen van verschillende gegevenstypen bevatten.