Diagramă de comparație:
Bazele comparației | Tipul de turnare | Tipul de conversie |
---|---|---|
Sens | Un tip de date este alocat altui utilizator, folosind un operator distribuit, apoi se numește "Casting Type". | Conversia unui tip de date la altul în mod automat de către compilator se numește "Tip de conversie". |
Aplicat | Determinarea tipului poate fi aplicată și pentru două tipuri de date "incompatibile". | Conversia de tip poate fi implementată numai atunci când două tipuri de date sunt "compatibile". |
Operator | Pentru distribuirea unui tip de date în altul, este necesar un operator "()". | Nu este necesar un operator. |
Dimensiunea tipurilor de date | Tipul destinației poate fi mai mic decât tipul sursă. | Aici tipul de destinație trebuie să fie mai mare decât tipul sursă. |
Pus în aplicare | Se face în timpul proiectării programelor. | Se face în mod explicit în timpul compilării. |
Tipul conversiei | Reducerea conversiei. | Extinderea conversiei. |
Exemplu | int a; byte b; ... ... b = (octet) a; | int a = 3; float b; b = a; // valoarea în b = 3.000. |
Definiția tipului de turnare
Tastarea de tip poate fi definită ca fiind, turnarea unui tip de date într-un alt tip de date, de către programator, în momentul proiectării programului. Conversia automată a unui tip de date în altul nu este posibilă tot timpul. Poate fi condiția ca "tipul de destinație" să fie mai mic decât "tipul de sursă", deci programatorul trebuie să arunce explicit tipul de date mai mare la tipul de date mai mic folosind operatorul de turnare "()". Dat fiind faptul că tipul de date mai mare este modulat la tipul de date mai mic, se mai numește și "conversie restrânsă".
destination_type = (target_type) variabilă / valoare // tipul de destinație este un tip în care doriți să convertiți tipul de sursă, acesta este întotdeauna tipul de destinație.
Să înțelegem cu un exemplu. Doriți să convertiți tipul de date "int" la "octet", acum, deoarece "octetul" este mai mic decât "int", conversia de tip nu este permisă. Aici a trebuit să convertim implicit "int" în "octet" folosind operatorul de turnare "()". Întrucât "int" este mai mare decât "byte", mărimea "int" va fi redusă la intervalul "int byte byte".
int a; byte b; ... ... b = (byte) a;
Când "float" este convertit în "int", dimensiunea floatului este trunchiată, deoarece "int" nu stochează valoarea fracționată. Dacă dimensiunea tipului de destinație este prea mică pentru ca tipul de sursă să se încadreze, atunci tipul de sursă este tipul de destinație modulo "interval". Castingul poate fi aplicat, de asemenea, atunci când tipurile de date sunt compatibile, este o practică bună de a utiliza turnarea de tip oriunde este nevoie de conversie de tip.
Definiția tipului de conversie
Conversia de tip este conversia automată a unui tip de date în altul ori de câte ori este necesar, făcut în mod explicit de către compilator. Dar există două condiții care trebuie îndeplinite înainte de conversia de tip.
- Sursa și tipul de destinație trebuie să fie compatibile.
- Tipul destinației trebuie să fie mai mare decât tipul sursă.
Aceste două condiții ar trebui să satisfacă pentru a realiza conversia de tip și acest tip de conversie se numește "conversie lărgită", deoarece un tip mai mic este convertit la un tip mai mare, are loc o lărgire a tipului. Pentru această conversie lărgită, tipurile numerice ca 'int', 'float' sunt compatibile între ele, în timp ce caracterul numeric și caracterul boolean sau char la boolean nu sunt, de asemenea, compatibile.
Acest exemplu va oferi o imagine mai bună a acestui aspect
int a = 3; float b; b = a; // valoarea în b = 3.000.
Aici, 'int' este convertit la 'float' care este mai mare decât 'int', astfel se produce lărgirea tipului de sursă. Aici nu este necesar un operator de turnare, deoarece compilatorul o va face în mod explicit.
Diferențele cheie între turnarea și conversia de tip
- Diferența de bază care diferențiază tipul de turnare de conversia de tip este faptul că turnarea de tip este conversia unui tip în altul, realizată de programator. Pe de altă parte, conversia de tip este conversia unui tip în altul, realizată de compilator în timpul compilării.
- Transformarea de tip poate fi aplicată tipurilor de date care pot să nu fie compatibile între ele, dar conversia de tip poate fi aplicată numai tipurilor de date care sunt compatibile între ele.
- Conversia unui tip în altul în turnarea de tip necesită operatorul de turnare "()", în timp ce conversia unui tip de date într-altul în conversie de tip nu necesită niciun operator.
- În timp ce conversia unui tip de date la altul în castingul de tip, tipul de destinație poate fi mai mare sau mai mic decât tipul sursă. Pe de altă parte, tipul destinației trebuie să fie mai mare decât tipul de sursă în conversia de tip.
- Conversia unui tip în alt tip se face în timp ce se codifică în turnarea de tip, în timp ce în conversia de tip conversia unui tip în altul se face în mod explicit în timpul compilării.
- Transformarea de tip se numește conversie restrânsă, deoarece aici tipul de destinație poate fi mai mic decât tipul sursei, în timp ce tipul de conversie se numește conversie lărgită, deoarece aici tipul de destinație trebuie să fie mai mare decât tipul sursă.
Concluzie:
Se poate concluziona că conversia de tip și turnarea de tip, ambele îndeplinesc sarcina de a converti un tip de date într-altul, dar diferă într-un sens că turnarea de tip este realizată de programator, folosind operatorul de turnare '()' și conversia de tip se face de către compilator și nu utilizează niciun operator.