Typové obsazení je v podstatě převod z jednoho typu na druhý. Existují dva typy převodu typu:
- Implicitní konverze typu Také známá jako „automatická konverze typu“.
- Provádí kompilátor sám o sobě, bez jakéhokoli externího spouštění ze strany uživatele.
- Obecně se vyskytuje, když je ve výrazu přítomen více než jeden datový typ. V takovém stavu probíhá konverze typu (propagace typu), aby nedošlo ke ztrátě dat.
- Všechny datové typy proměnných jsou upgradovány na datový typ proměnné s největším datovým typem.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double>
- Je možné, že implicitní převody ztratí informace, mohou se ztratit znaménka (když je podepsané implicitně převedeno na nepodepsané) a může dojít k přetečení (když se long long implicitně převede na float).
- Převod podle zadání: To se provádí explicitním definováním požadovaného typu před výrazem v závorkách. To lze také považovat za násilné odlévání.
Syntax:
(type) expression>
kde typ označuje datový typ, na který je konečný výsledek převeden.
Pří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ýstup:Sum = 2>
- Převod pomocí operátoru Cast: Operátor Cast je an unární operátor který nutí jeden datový typ převést na jiný datový typ.
C++ podporuje čtyři typy castingu:- Statické obsazení
- Dynamické obsazení
- Const Cast
- Reinterpretovat obsazení
Příklad:
#include>
using>
namespace>
std;>
int>
main()>
{>
>
float>
f = 3.5;>
>
>
// using cast operator>
>
int>
b =>
static_cast>
<>
int>
>(F);>
>
>
cout << b;>
}>
>
>
jak velká je obrazovka mého počítače
Výstup:3>
Příklad implicitní konverze typu:
array.sort v jazyce Java
// 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ýstup:
x = 107 y = a z = 108>Explicitní konverze typu: Tento proces se také nazývá přetypování a je definován uživatelem. Zde může uživatel přetypovat výsledek a vytvořit z něj konkrétní datový typ.
V C++ to lze provést dvěma způsoby:
Výhody typové konverze:
- To se provádí za účelem využití určitých funkcí typových hierarchií nebo reprezentací typů.
- Pomáhá vypočítat výrazy obsahující proměnné různých datových typů.