Pretvorba tipov v C++
Pretvorba tipa je v bistvu pretvorba iz enega tipa v drugega. Obstajata dve vrsti pretvorbe tipa:
- Implicitna pretvorba tipa Znana tudi kot 'samodejna pretvorba tipa'.
- Izvede ga prevajalnik sam, brez kakršnega koli zunanjega sprožilca s strani uporabnika.
- Na splošno se zgodi, ko je v izrazu prisoten več kot en tip podatkov. V takih pogojih pride do pretvorbe tipa (promocija tipa), da se prepreči izguba podatkov.
- Vsi podatkovni tipi spremenljivk so nadgrajeni na podatkovni tip spremenljivke z največjim podatkovnim tipom.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double
- Možno je, da implicitne pretvorbe izgubijo informacije, znaki se lahko izgubijo (ko je predznak implicitno pretvorjen v nepredznak) in lahko pride do prelivanja (ko je long long implicitno pretvorjen v float).
- Pretvarjanje po dodelitvi: To storite tako, da izrecno definirate zahtevani tip pred izrazom v oklepaju. To lahko štejemo tudi za silovit vložek.
Sintaksa:
(type) expression
kje vrsto označuje podatkovni tip, v katerega se pretvori končni rezultat.
primer:
// 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;>}>
Izhod:Sum = 2
- Pretvorba z uporabo operaterja Cast: Operater Cast je an unarni operator ki prisili, da se en podatkovni tip pretvori v drug podatkovni tip.
C++ podpira štiri vrste ulitkov:- Statična zasedba
- Dynamic Cast
- Const Cast
- Reinterpret Cast
primer:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(f);>>>cout < < b;>}>
Izhod:3
Primer implicitne pretvorbe vrste:
// 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;> }> |
Izhod:
x = 107 y = a z = 108Eksplicitna pretvorba tipa : Ta postopek se imenuje tudi pretvorba tipa in ga določi uporabnik. Tukaj lahko uporabnik tipizira rezultat, da ga naredi za določen tip podatkov.
V C++ je to mogoče storiti na dva načina:
Prednosti pretvorbe tipa:
- To naredimo zato, da izkoristimo določene lastnosti hierarhij tipov ali predstavitev tipov.
- Pomaga izračunati izraze, ki vsebujejo spremenljivke različnih tipov podatkov.