Rozdiel medzi obsadením typu a konverziou typu

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 4 Smieť 2024
Anonim
Rozdiel medzi obsadením typu a konverziou typu - Technológie
Rozdiel medzi obsadením typu a konverziou typu - Technológie

Obsah


Základný rozdiel medzi typovou konverziou a typovým odovzdávaním, t. J. Prevod typu sa vykonáva „automaticky“ kompilátorom, zatiaľ čo typové prenášanie má „explicitne robiť“ programátor.

Dva výrazy „odovzdávanie typu“ a „konverzia typu“ sa vyskytujú, keď je potrebné previesť jeden typ údajov na iný. Ak sú dva typy navzájom kompatibilné, kompilátor automaticky prevedie jeden typ na druhý. Poďme diskutovať o rozdieloch typu casting a konverzia pomocou porovnávacej tabuľky.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka:

Základ pre porovnanieTyp OdlievanieTyp Konverzia
zmyselJeden dátový typ je priradený užívateľovi pomocou operátora prenášania, ktorý sa potom nazýva „Casting typu“.Konverzia jedného typu údajov na druhý automaticky pomocou kompilátora sa nazýva „Konverzia typu“.
aplikovanýOdlievanie typov možno použiť aj na dva nekompatibilné typy údajov.Konverzia typu sa dá implementovať iba vtedy, keď sú kompatibilné dva typy údajov.
operátorNa prenášanie dátového typu na iný sa vyžaduje operátor casting ().Nie je potrebný žiadny operátor.
Veľkosť typov údajovTyp cieľa môže byť menší ako typ zdroja.Typ cieľa musí byť tu väčší ako typ zdroja.
ImplementovanáUskutočňuje sa to počas navrhovania programu.Robí sa to explicitne pri kompilácii.
Typ konverzie

Úzka konverzia.Rozšírenie konverzie.
príkladint a;
bajt b;
...
...
b = (bajt) a;
int a = 3;
plavák b;
b = a; // hodnota v b = 3 000.


Definícia odlievania typu

Typ casting môže byť definovaný ako odlievanie jedného dátového typu na iný dátový typ programátorom v čase návrhu programu. Automatická konverzia jedného typu údajov na iný nie je vždy možná. Môže byť podmienkou, že „cieľový typ“ je menší ako „typ zdroja“. Preto musí programátor prenášať väčší dátový typ explicitne na menší dátový typ pomocou operátora casting ()). Keďže väčší typ údajov je modulovaný na menší typ údajov, nazýva sa aj „zúžená konverzia“.

vyhlásenie:

destination_type = (target_type) premenná / hodnota // target type je typ, v ktorom chcete previesť typ zdroja, je to vždy cieľový typ.

príklad

Pochopme to príkladom. Chcete previesť typ údajov „int“ na „byte“. Keďže je „byte“ menšie ako „int“, nie je povolená konverzia typu. Tu sme museli implicitne premeniť „int“ na „byte“ pomocou operátora casting ()). Keďže hodnota „int“ je väčšia ako „byte“, veľkosť „int“ sa zníži na rozsah „int mod byte“.


int a; bajt b; ... ... b = (bajt) a;

Keď sa premenná „float“ zmení na „int“, veľkosť float sa skráti, pretože hodnota „int“ neuloží zlomkovú hodnotu. Ak je veľkosť cieľového typu príliš malá na to, aby sa do neho zmestil typ zdroja, potom je typom zdroja cieľový typ „rozsah“. Odlievanie sa dá použiť aj vtedy, keď sú typy údajov kompatibilné. Je vhodné používať odlievanie typov všade tam, kde je potrebná konverzia typu.

Definícia konverzie typu

Typ konverzie je automatická konverzia jedného dátového typu na iný vždy, keď je to potrebné, vykonaná výslovne kompilátorom. Pred konverziou typu však musia byť splnené dve podmienky.

  • Typ zdroja a cieľ musí byť kompatibilný.
  • Typ cieľa musí byť väčší ako typ zdroja.

Tieto dve podmienky by mali spĺňať, aby sa dosiahla konverzia typu, a tento druh konverzie sa nazýva „rozširujúca konverzia“, pretože menší typ sa konvertuje na väčší typ a dochádza k rozširovaniu typu. Pre túto rozširujúcu sa konverziu sú číselné typy ako „int“, „float“ navzájom kompatibilné, zatiaľ čo číselné znaky na char a boolean alebo char na boolean nie sú kompatibilné.

príklad

Tento príklad poskytne lepší prehľad

int a = 3; plavák b; b = a; // hodnota v b = 3 000.

Tu je „int“ prevedené na „float“, ktoré je väčšie ako „int“, takže dôjde k rozšíreniu typu zdroja. Tu nie je potrebný žiadny operátor casting, pretože kompilátor to urobí explicitne.

  1. Základný rozdiel, ktorý odlišuje odlievanie typov od konverzie typu, je, že odlievanie typov je konverzia jedného typu na druhý, vykonaná programátorom. Na druhú stranu, konverzia typu je konverzia jedného typu na druhý, vykonaná kompilátorom pri kompilácii.
  2. Odlievanie typov možno použiť na dátové typy, ktoré nemusia byť navzájom kompatibilné. Naopak, prevod typu sa dá použiť iba na typy údajov, ktoré sú navzájom kompatibilné.
  3. Konverzia jedného typu na iný typ pri odlievaní vyžaduje operátora castingu „()“, zatiaľ čo konverzia jedného typu údajov na druhú konverziu typu nevyžaduje operátora.
  4. Pri prevode jedného typu údajov na iný typ pri odlievaní typu môže byť cieľový typ väčší alebo menší ako typ zdroja. Naopak, typ určenia musí byť väčší ako typ zdroja pri prevode typu.
  5. Konverzia jedného typu na iný typ sa vykonáva počas kódovania v type casting. Naproti tomu pri prevode typov sa prevod jedného typu na iný uskutočňuje explicitne počas kompilácie.
  6. Odlievanie typov sa nazýva zúženie konverzie, pretože tu môže byť cieľový typ menší ako typ zdroja. Na rozdiel od toho sa typová konverzia nazýva rozširujúca sa konverzia, pretože tu musí byť cieľový typ väčší ako typ zdroja.

záver:

Možno vyvodiť záver, že konverzia typu a odovzdávanie typu vykonávajú úlohu prevodu jedného typu údajov na iný, ale líšia sa v tom zmysle, že odovzdávanie typu vykonáva programátor pomocou operátora odovzdávania () 'a prevod typu vykonáva kompilátor. a nepoužíva žiadny operátor.