Atšķirība starp tipa liešanu un tipa konvertēšanu
Saturs
- Salīdzināšanas tabula:
- Tipa liešanas definīcija
- Piemērs
- Tipa konvertēšanas definīcija
- Piemērs
- Secinājums:
Pamata atšķirība starp tipa konvertēšanu un veida liešanu, t.i., tipa konvertēšanu “automātiski” veic kompilators, turpretim tipa liešana “skaidri jāveic” programmētājam.
Divi termini “tipa liešana” un “tipa konvertēšana” rodas, ja ir nepieciešams pārveidot vienu datu tipu citā. Ja abi tipi ir savstarpēji savietojami, kompilators automātiski konvertē vienu tipu uz citu. Apskatīsim atšķirības gan veidu liešanā, gan konvertācijā, izmantojot salīdzināšanas tabulu.
- Salīdzināšanas tabula
- Definīcija
- Galvenās atšķirības
- Secinājums
Salīdzināšanas tabula:
Salīdzināšanas pamats | Veids Casting | Tipa konvertēšana |
---|---|---|
Nozīme | Vienu datu tipu lietotājs piešķir citam lietotājam, izmantojot apraides operatoru, tad to sauc par “Type Casting”. | Kompilators automātiski konvertē viena datu tipu uz citu, to sauc par “Type Conversion”. |
Lietots | Veidu pārsūtīšanu var piemērot arī diviem nesaderīgiem datu tipiem. | Tipa konvertēšanu var veikt tikai tad, ja ir saderīgi divi datu tipi. |
Operators | Datu veida apraidei citam ir nepieciešams apraides operators (). | Operators nav nepieciešams. |
Datu veidu lielums | Galamērķa tips var būt mazāks nekā avota tips. | Šeit mērķa veidam jābūt lielākam par avota tipu. |
Īstenots | Tas tiek darīts programmas izstrādes laikā. | Tas tiek darīts tieši sastādīšanas laikā. |
Konversijas tips | Sašaurināšanās konversija. | Paplašinot pārveidošanu. |
Piemērs | int a; bits; ... ... b = (baits) a; | int a = 3; pludiņš b; b = a; // vērtība b = 3 000. |
Tipa liešanas definīcija
Veids liešana to var definēt kā viena datu tipa nomaiņu citam datu tipam, ko programmētājs izstrādā programmas laikā. Automātiska viena datu veida pārveidošana citā nav visu laiku iespējama. Var būt nosacījums, ka “galamērķa tips” ir mazāks nekā “avota tips”. Tāpēc programmētājam, izmantojot liešanas operatoru '()', skaidri jānorāda lielāks datu tips uz mazāku datu tipu. Tā kā lielāks datu tips tiek modulēts ar mazāku datu tipu, to sauc arī par “sašaurinošu reklāmguvumu”.
Deklarācija:Destination_type = (target_type) mainīgais / vērtība // mērķa tips ir tips, kurā vēlaties konvertēt avota veidu, tas vienmēr ir mērķa tips.
Piemērs
Sapratīsim to ar piemēru. Jūs vēlaties pārveidot datu tipu “int” par “baitu”. Tagad, tā kā “baits” ir mazāks nekā “int”, veida konvertēšana nav atļauta. Šeit mums netieši bija jāpārvērš “int” par “baitu”, izmantojot liešanas operatoru “()”. Tā kā “int” ir lielāks nekā “baits”, “int” lielums tiks samazināts līdz “int mod baits”.
int a; bits; ... ... b = (baits) a;
Kad “pludiņš” tiek pārveidots par “int”, pludiņa lielums tiek saīsināts, jo “int” nesaglabā frakcionēto vērtību. Ja mērķa tipa lielums ir pārāk mazs, lai avota tips ietilptu, tad avota tips ir modulo galamērķa tips “diapazons”. Apraidi var izmantot arī tad, ja datu veidi ir saderīgi. Ir laba prakse izmantot veida liešanu visur, kur nepieciešama tipa konvertēšana.
Tipa konvertēšanas definīcija
Tipa konvertēšana ir automātiska viena datu veida pārvēršana citā, kad vien tas ir nepieciešams, un to tieši veic kompilators. Bet pirms tipa pārveidošanas ir jāizpilda divi nosacījumi.
- Avota un mērķa tipam jābūt saderīgam.
- Galamērķa tipam jābūt lielākam par avota tipu.
Šiem diviem nosacījumiem ir jābūt izpildītiem, lai panāktu tipa pārvēršanu, un šāda veida pārvēršanu sauc par “paplašinošu reklāmguvumu”, jo mazāks tips tiek pārveidots par lielāku tipu, un notiek tipa paplašināšanās. Šim paplašinātajam konvertēšanai skaitļu tipi, piemēram, “int”, “float”, ir savstarpēji savietojami, savukārt ciparu - char un boolean vai char - boolean veidi arī nav savietojami.
Piemērs
Šis piemērs sniegs labāku priekšstatu par to
int a = 3; pludiņš b; b = a; // vērtība b = 3 000.
Šeit “int” tiek pārveidots par “float”, kas ir lielāks nekā “int”, tāpēc notiek avota veida paplašināšanās. Šeit liešanas operators nav nepieciešams, jo kompilators to darīs tieši.
- Pamata atšķirība, kas atšķir tipa liešanu no tipa pārveidošanas, ir tāda, ka veida liešana ir viena veida pārveidošana citā, ko veic programmētājs. No otras puses, tipa konvertēšana ir viena veida konvertēšana uz citu, ko kompilators veic kompilēšanas laikā.
- Datu veidiem var piemērot apraidi, kas var nebūt savietojami viens ar otru. Turpretī tipa konvertēšanu var piemērot tikai tiem datu tipiem, kas ir savstarpēji savietojami.
- Viena veida pārveidošanai citā veida liešanā ir nepieciešams liešanas operators “()”, savukārt viena datu veida konvertēšanai citā veida pārveidē nav nepieciešams neviens operators.
- Pārveidojot vienu datu tipu citā veida apraidē, mērķa tips var būt lielāks vai mazāks nekā avota tips. Pretstatā mērķa tipam jābūt lielākam par avota tipu tipa pārveidē.
- Viena tipa konvertēšana uz citu tipu tiek veikta, kodējot veidu liešanā. Turpretī tipa pārveidošanā viena veida pārvēršana citā tiek veikta tieši kompilācijas laikā.
- Tipa liešana tiek saukta par sašaurinošu konvertēšanu, jo šeit mērķa tips var būt mazāks nekā avota tips. Atšķirībā no tipa konvertēšanu sauc par paplašinošu reklāmguvumu, jo šeit mērķa veidam jābūt lielākam par avota tipu.
Secinājums:
Var secināt, ka gan tipa konvertēšana, gan tipa liešana veic uzdevumu pārveidot vienu datu tipu citā, taču atšķiras tādā nozīmē, ka tipa konvertēšanu veic programmētājs, izmantojot cast operator () un tipa konvertēšanu veic kompilators. , un tas neizmanto nevienu operatoru.