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).
- 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:- Statische cast
- Dynamische cast
- Const Cast
- Herinterpreteer cast
Voorbeeld:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(F);>>>cout < < b;>}>
Uitgang:3
Voorbeeld van type impliciete conversie:
// 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 = 108Expliciete 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:
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.