Un tip cast este practic o conversie de la un tip la altul. Există două tipuri de conversie de tip:
- Conversie implicită a tipului Cunoscută și sub denumirea de „conversie automată a tipului”.
- Efectuat de compilator pe cont propriu, fără niciun declanșator extern de la utilizator.
- În general, are loc atunci când într-o expresie sunt prezente mai multe tipuri de date. În astfel de condiții, conversia tipului (promovarea tipului) are loc pentru a evita pierderea datelor.
- Toate tipurile de date ale variabilelor sunt actualizate la tipul de date al variabilei cu cel mai mare tip de date.
bool ->char -> short int -> int -> unsigned int -> long -> unsigned -> long long -> float -> double -> long double>
- Este posibil ca conversiile implicite să piardă informații, semnele pot fi pierdute (când este semnat este implicit convertit în nesemnat) și poate apărea depășire (când long long este implicit convertit în float).
- Conversie prin atribuire: Acest lucru se face prin definirea explicită a tipului necesar în fața expresiei din paranteză. Acest lucru poate fi considerat și ca casting forțat.
Sintaxă:
(type) expression>
Unde tip indică tipul de date la care este convertit rezultatul final.
Exemplu:
// 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;>}>>
>
Ieșire:Sum = 2>
- Conversie folosind operatorul Cast: Un operator Cast este un operator unar care obligă un tip de date să fie convertit într-un alt tip de date.
C++ acceptă patru tipuri de casting:- Distribuție statică
- Distribuție dinamică
- Const Cast
- Reinterpretați distribuția
Exemplu:
structuri de date java
#include>using>namespace>std;>int>main()>{>>float>f = 3.5;>>>// using cast operator>>int>b =>static_cast><>int>>(f);>>>> cout << b;>}>>
>
Ieșire:3>
Exemplu de tip de conversie implicită:
// 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;> }> |
>
>Ieșire:
x = 107 y = a z = 108>Conversie explicită de tip: Acest proces se mai numește și turnare de tip și este definit de utilizator. Aici utilizatorul poate scrie rezultatul pentru a-l face dintr-un anumit tip de date.
În C++, se poate face prin două moduri:
Avantajele conversiei de tip:
- Acest lucru se face pentru a profita de anumite caracteristici ale ierarhiilor de tip sau ale reprezentărilor de tip.
- Ajută la calcularea expresiilor care conțin variabile de diferite tipuri de date.