Odporúčaná, 2022

Redakcia Choice

Rozdiel medzi typom castingu a typom konverzie

Dva výrazy "casting typu" a "typová konverzia" sa vyskytujú v prípade, že je potrebné previesť jeden dátový typ na druhý. Keď sú dva typy navzájom kompatibilné, konverzia jedného typu na iný sa vykonáva automaticky prekladačom. Existuje však zásadný rozdiel medzi konverzným typom a typovým odovzdávaním, tj typová konverzia sa vykoná "automaticky" prekladačom, zatiaľ čo typový odovzdávanie programátorom musí byť "výslovne vykonaný". Poďme diskutovať o rozdielom ako casting a konverziu pomocou porovnávacieho grafu.

Porovnávacia tabuľka:

Základ pre porovnanieCast CastingTyp konverzie
zmyselJeden typ údajov je užívateľovi priradený inému používateľovi pomocou operátora cast, potom sa nazýva "Casting Type".Konverzia jedného typu údajov na iný typ automaticky od kompilátora sa nazýva Konverzia typu.
aplikovanýTypové odlievanie môže byť použité aj pre dva "nekompatibilné" dátové typy.Konverzia typu môže byť implementovaná iba vtedy, keď sú dva typy údajov kompatibilné.
operátorPri odovzdávaní dátového typu do druhého je potrebný operátor castingu ().Nie je potrebný žiadny operátor.
Veľkosť typov údajovTyp cieľa môže byť menší ako typ zdroja.Tu musí byť typ cieľa väčší ako typ zdroja.
ImplementovanáRobí sa počas projektovania programu.Pri kompilácii sa to robí explicitne.
Typ konverzie
Zúženie konverzie.Rozšírenie konverzie.
príkladint a;
bajt b;
...
...
b = (byte) a;
int a = 3;
plavák b;
b = a; // hodnota v b = 3 000.

Definícia castingu typu

Typové odlievanie môže byť definované ako odovzdávanie jedného dátového typu inému dátovému typu programátorom v čase návrhu programu. Automatická konverzia jedného dátového typu na iný nie je možná vždy. Môže to byť podmienka, že "typ cieľa" je menší ako "typ zdroja", takže programátor musí explicitne priradiť väčší typ dát k menšiemu typu údajov pomocou operátora castingu "()". Keďže väčší typ údajov je modulovaný na menší typ údajov, nazýva sa to aj "zúženie konverzie".

vyhlásenie:

 destination_type = (target_type) premenná / hodnota // typ cieľa je typ, v ktorom chcete konvertovať zdrojový typ, vždy je typ cieľa. 

Chápeme to s príkladom. Chcete konvertovať typ údajov "int" na "byte", teraz, pretože "byte" je menšie ako "int", typ konverzie nie je povolený. Tu sme museli implicitne konvertovať 'int' na 'byte' pomocou operátora castingu '()'. Keďže 'int' je väčší ako 'byte', veľkosť 'int' sa zníži na "int mod byte".

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

Keď sa 'float' prevedie na 'int', veľkosť plaváka sa skráti, pretože 'int' neuchováva zlomkovú hodnotu. Ak je veľkosť cieľa príliš malá na to, aby typ zdroja zodpovedal, typ zdroja je modulo cieľ typu "rozsah". Casting môže byť použitý aj vtedy, keď sú dátové typy kompatibilné, je dobré používať typové odlievanie všade tam, kde je potrebná konverzia typu.

Definícia konverzie typu

Typová konverzia je automatická konverzia jedného dátového typu na iný, kedykoľvek je to potrebné, čo robia explicitne kompilátor. Pred konverziou typu však musia byť splnené dve podmienky.

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

Tieto dve podmienky by mali uspokojiť, aby sa dosiahla konverzia typu, a tento druh konverzie sa nazýva "rozšírenie konverzie", pretože menší typ je konvertovaný na väčší typ, dochádza k rozšíreniu typu. Pre túto rozširujúcu sa konverziu sú číselné typy ako "int", "float" navzájom kompatibilné, zatiaľ čo numerické znaky a booleovské znaky alebo znaky booleovské nie sú kompatibilné.

Tento príklad vám poskytne lepší prehľad o tom

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

Tu je 'int' konvertovaný na 'float', ktorý je väčší ako 'int', takže dochádza k rozšíreniu typu zdroja. Tu nie je žiadny operátor castingu, pretože to kompilátor urobí explicitne.

Kľúčové rozdiely medzi typom castingu a konverzie

  1. Základný rozdiel, ktorý rozlišuje odlievanie typu od konverzie typu, je to, že odovzdávanie typu je konverzia jedného typu na iný, vykonaný programátorom. Na druhej strane typová konverzia je konverzia jedného typu na druhú, ktorú vykonal kompilátor pri kompilácii.
  2. Odovzdanie typu sa môže použiť na typy údajov, ktoré nemusia byť vzájomne kompatibilné, ale typová konverzia sa môže použiť iba na typy údajov, ktoré sú navzájom kompatibilné.
  3. Konverzia jedného typu na druhého pri odovzdávaní typu vyžaduje prevádzkovateľa odliatku "()", zatiaľ čo konverzia jedného dátového typu na iný typ konverzie nevyžaduje žiadneho operátora.
  4. Pri prevode jedného typu údajov na druhom v typovom odovzdávaní môže byť typ cieľa väčší alebo menší ako typ zdroja. Na druhej strane, typ cieľa musí byť väčší ako typ zdroja pri konverzii typu.
  5. Konverzia jedného typu na iný typ sa vykonáva pri kódovaní v typovom odovzdávaní, zatiaľ čo pri konverzii typu sa konverzia jedného typu na iný vykonáva explicitne počas kompilácie.
  6. Typové odovzdávanie sa nazýva zúženie konverzie, pretože tu môže byť typ cieľa menší ako typ zdroja, zatiaľ čo konverzia typu sa nazýva rozšírenie konverzie, pretože tu musí byť cieľ typu väčší ako typ zdroja.

záver:

Je možné konštatovať, že typová konverzia a casting typu, vykonávajú úlohu prevodu jedného dátového typu do druhého, ale líšia sa v tom zmysle, že odovzdávanie typu vykoná programátor pomocou operátora cast (')' a konverzie typu vykoná kompilátor a nepoužíva žiadneho operátora.

Top