Skriv Konvertering i C++
En type cast er i utgangspunktet en konvertering fra en type til en annen. Det finnes to typer typekonvertering:
- Implisitt typekonvertering Også kjent som 'automatisk typekonvertering'.
- Utført av kompilatoren på egen hånd, uten noen ekstern trigger fra brukeren.
- Oppstår vanligvis når det er mer enn én datatype i et uttrykk. I en slik tilstand foregår typekonvertering (typepromotering) for å unngå tap av data.
- Alle datatypene til variablene oppgraderes til datatypen til variabelen med størst datatype.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double
- Det er mulig for implisitte konverteringer å miste informasjon, tegn kan gå tapt (når signert blir implisitt konvertert til usignert), og overløp kan oppstå (når long long implisitt konverteres til float).
- Konvertering etter oppgave: Dette gjøres ved å eksplisitt definere ønsket type foran uttrykket i parentes. Dette kan også betraktes som kraftfull støping.
Syntaks:
(type) expression
hvor type angir datatypen som det endelige resultatet konverteres til.
Eksempel:
// 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;>}>
Produksjon:Sum = 2
- Konvertering med Cast-operator: En Cast-operatør er en unær operatør som tvinger én datatype til å bli konvertert til en annen datatype.
C++ støtter fire typer støping:- Statisk cast
- Dynamisk rollebesetning
- Const Cast
- Omtolk Cast
Eksempel:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(f);>>>cout < < b;>}>
Produksjon:3
Eksempel på type implisitt konvertering:
// 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;> }> |
Produksjon:
x = 107 y = a z = 108Eksplisitt typekonvertering: Denne prosessen kalles også typecasting, og den er brukerdefinert. Her kan brukeren typecaste resultatet for å gjøre det til en bestemt datatype.
I C++ kan det gjøres på to måter:
Fordeler med typekonvertering:
- Dette gjøres for å dra nytte av visse funksjoner i typehierarkier eller typerepresentasjoner.
- Det hjelper å beregne uttrykk som inneholder variabler av forskjellige datatyper.