Zadajte konverziu v C++
Typové obsadenie je v podstate konverzia z jedného typu na druhý. Existujú dva typy konverzie typu:
- Implicitná konverzia typu Tiež známa ako „automatická konverzia typu“.
- Vykonáva kompilátor samostatne, bez akéhokoľvek externého spúšťača od používateľa.
- Vo všeobecnosti sa vyskytuje, keď je vo výraze prítomný viac ako jeden typ údajov. V takom stave prebieha konverzia typu (propagácia typu), aby sa predišlo strate údajov.
- Všetky typy údajov premenných sa upgradujú na typ údajov premennej s najväčším typom údajov.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double
- Je možné, že pri implicitných konverziách sa stratia informácie, môžu sa stratiť znaky (keď sa podpísané implicitne skonvertuje na nepodpísané) a môže dôjsť k pretečeniu (keď sa long long implicitne skonvertuje na float).
- Konverzia podľa zadania: To sa dosiahne explicitným definovaním požadovaného typu pred výrazom v zátvorkách. Toto možno považovať aj za násilné vrhanie.
Syntax:
(type) expression
kde typu označuje typ údajov, na ktorý sa konvertuje konečný výsledok.
Príklad:
// 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;>}>
Výkon:Sum = 2
- Konverzia pomocou operátora Cast: Operátor Cast je an unárny operátor ktorý núti jeden dátový typ konvertovať na iný dátový typ.
C++ podporuje štyri typy castingu:- Statické prenášanie
- Dynamické obsadenie
- Const Cast
- Reinterpretovať Cast
Príklad:
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(f);>>>cout < < b;>}>
Výkon:3
Príklad implicitnej konverzie typu:
// 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;> }> |
Výkon:
x = 107 y = a z = 108Explicitná konverzia typu: Tento proces sa tiež nazýva pretypovanie a je definovaný používateľom. Tu môže používateľ pretypovať výsledok, aby z neho vytvoril konkrétny dátový typ.
V C++ sa to dá urobiť dvoma spôsobmi:
Výhody typovej konverzie:
- Robí sa to s cieľom využiť určité vlastnosti typových hierarchií alebo reprezentácií typov.
- Pomáha počítať výrazy obsahujúce premenné rôznych dátových typov.