Rzutowanie typu to w zasadzie konwersja z jednego typu na inny. Istnieją dwa typy konwersji typów:
- Niejawna konwersja typów Znana również jako „automatyczna konwersja typów”.
- Wykonywane samodzielnie przez kompilator, bez zewnętrznego wyzwalacza ze strony użytkownika.
- Zwykle ma to miejsce, gdy w wyrażeniu występuje więcej niż jeden typ danych. W takim przypadku następuje konwersja typu (promocja typu), aby uniknąć utraty danych.
- Wszystkie typy danych zmiennych są uaktualniane do typu danych zmiennej o największym typie danych.
bool ->char -> krótki int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double>
- Istnieje możliwość utraty informacji w wyniku niejawnych konwersji, utraty znaków (kiedy znak jest niejawnie konwertowany na bez znaku) i może wystąpić przepełnienie (kiedy long long jest niejawnie konwertowany na float).
- Konwersja według przypisania: Odbywa się to poprzez jawne zdefiniowanie wymaganego typu przed wyrażeniem w nawiasie. Można to również uznać za mocne rzucanie.
Składnia:
(type) expression>
Gdzie typ wskazuje typ danych, na który konwertowany jest wynik końcowy.
tekst zawijania css
Przykład:
// 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;>
}>
>
>
Wyjście:Sum = 2>
- Konwersja przy użyciu operatora Cast: Operator Cast to operator jednoargumentowy co wymusza konwersję jednego typu danych na inny typ danych.
C++ obsługuje cztery typy rzutowania:- Obsada statyczna
- Dynamiczna obsada
- Obsada stała
- Reinterpretacja obsady
Przykład:
#include>
using>
namespace>
std;>
int>
main()>
{>
>
float>
f = 3.5;>
>
>
// using cast operator>
>
int>
b =>
static_cast>
<>
int>
>(F);>
>
>
cout << b;>
}>
>
>
Wyjście:3>
Przykład niejawnej konwersji 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;> }> |
>
>Wyjście:
x = 107 y = a z = 108>Jawna konwersja typu: proces ten nazywany jest także rzutowaniem typu i jest definiowany przez użytkownika. Tutaj użytkownik może wpisać wynik, aby uzyskać określony typ danych.
W C++ można to zrobić na dwa sposoby:
Zalety konwersji typów:
- Ma to na celu wykorzystanie pewnych funkcji hierarchii typów lub reprezentacji typów.
- Pomaga obliczać wyrażenia zawierające zmienne o różnych typach danych.