Tablica usporedbe:
Osnova za usporedbu | Tip Casting | Pretvorba tipa |
---|---|---|
Značenje | Korisnik dodijeli jedan tip podataka drugom, koristeći operaciju odljevka, a onda se naziva "Tip Casting". | Konvertiranje jednog tipa podataka u drugi automatski se zove "Konverzija tipa". |
primijenjen | Lijevanje tipova također se može primijeniti na dvije vrste "nekompatibilnih" podataka. | Pretvorba tipa može se provesti samo kada su dva tipa podataka "kompatibilna". |
Operater | Za prebacivanje tipa podataka u drugi, potreban je operator casting '()'. | Nije potreban operator. |
Veličina vrsta podataka | Vrsta odredišta može biti manja od vrste izvora. | Ovdje odredišni tip mora biti veći od tipa izvora. |
Provodi | To se radi tijekom projektiranja programa. | To se radi eksplicitno tijekom kompajliranja. |
Vrsta pretvorbe | Sužavanje konverzije. | Proširenje pretvorbe. |
Primjer | int a; bajt b; ... ... b = (bajt) a; | int a = 3; float b; b = a; // vrijednost u b = 3.000. |
Definicija tipskog lijevanja
Odljevak tipa može se definirati kao, bacajući jedan tip podataka na drugi tip podataka, od strane programera, u vrijeme izrade programa. Automatska pretvorba jednog tipa podataka u drugu nije moguća cijelo vrijeme. To može biti uvjet da je 'tip odredišta' manji od 'izvornog tipa', tako da programer mora eksplicitno izvesti veći tip podataka na manji tip podataka pomoću operatora lijevanja '()'. Budući da je veći tip podataka moduliran na manji tip podataka, on se također naziva 'sužena konverzija'.
destination_type = (target_type) varijabla / vrijednost // ciljni tip je tip u kojem želite pretvoriti izvorni tip koji je uvijek odredišni tip.
Razumimo to s primjerom. Želite pretvoriti vrstu podataka 'int' u 'byte', sada, kada je 'byte' manji od 'int', pretvorba tipa nije dopuštena. Ovdje smo morali implicitno konvertirati 'int' u 'byte' pomoću operacije casting '()'. Kako je 'int' veći od 'bajta', veličina 'int' će se smanjiti na raspon 'int mod byte'.
int a; bajt b; ... ... b = (bajt) a;
Kada se 'float' pretvori u 'int', veličina float se skrati, jer 'int' ne pohranjuje djelomičnu vrijednost. Ako je veličina tipa odredišta premala za vrstu izvora u koju se može uklopiti, tada je tip izvora modulo odredišni tip "range". Lijevanje se također može primijeniti kada su tipovi podataka kompatibilni, dobra je praksa koristiti lijevanje tipa gdje god je potrebna pretvorba tipa.
Definicija pretvorbe tipa
Konverzija tipa je automatska konverzija jednog tipa podataka u drugu kad god je to potrebno, a to je izričito izvršio prevodilac. No, prije konverzije tipa postoje dva uvjeta.
- Vrsta izvora i odredište moraju biti kompatibilni.
- Vrsta odredišta mora biti veća od vrste izvora.
Ta dva uvjeta trebala bi zadovoljiti kako bi se postigla konverzija tipa, a takva se konverzija naziva 'proširenje konverzije', budući da se manji tip pretvara u veći tip, dolazi do proširenja tipa. Za ovu konverziju proširenja, numerički tipovi kao "int", "float" kompatibilni su jedan s drugim dok brojčani znakovi i boolean ili char u boolean također nisu kompatibilni.
Ovaj primjer će pružiti bolji pregled toga
int a = 3; float b; b = a; // vrijednost u b = 3.000.
Ovdje se 'int' pretvara u 'float' koji je veći od 'int', tako da dolazi do proširenja tipa izvora. Ovdje nije potreban nijedan operater lijevanja jer će ga kompajler to izričito učiniti.
Ključne razlike između lijevanja i konverzije
- Osnovna razlika koja razlikuje razlikovanje tipova od konverzije tipa je da je lijevanje vrste konverzija jednog tipa u drugi, koju obavlja programer. S druge strane, konverzija tipa je konverzija jednog tipa u drugi, izvršena od strane kompilatora tijekom kompajliranja.
- Lijevanje tipa može se primijeniti na tipove podataka koji možda nisu međusobno kompatibilni, ali pretvorba tipa može se primijeniti samo na tipove podataka koji su međusobno kompatibilni.
- Pretvorba jednog tipa u drugi u lijevanju tipa zahtijeva operaciju casting “()”, dok konverzija jednog tipa podataka u drugu u pretvorbi tipa ne zahtijeva bilo koji operator.
- Dok konvertira jedan tip podataka u drugi u lijevanju tipa, tip odredišta može biti veći ili manji od tipa izvora. S druge strane, tip odredišta mora biti veći od tipa izvora u pretvorbi tipa.
- Pretvorba jednog tipa u drugi tip se vrši kod kodiranja u lijevanju tipova, dok se u pretvorbi tipa, konverzija jednog tipa u drugu obavlja eksplicitno tijekom kompilacije.
- Odvajanje tipa naziva se sužavanje konverzije jer ovdje tip odredišta može biti manji od tipa izvora, dok se tipska konverzija naziva proširenje konverzije jer ovdje tip odredišta mora biti veći od tipa izvora.
Zaključak:
Može se zaključiti da tipska konverzija i lijevanje tipa obavljaju zadatak pretvaranja jednog tipa podataka u drugi, ali se razlikuju u smislu da se programiranje koristi za lijevanje tipa, a pomoću operacije cast (')' i konverzija tipa obavlja se pomoću i ne koristi nijedan operator.