Salīdzināšanas diagramma:
Salīdzinājuma pamats | Tipa liešana | Tipa konvertēšana |
---|---|---|
Nozīme | Lietotājs piešķir vienam datu tipam, izmantojot lietotu operatoru, tad to sauc par "tipa liešanu". | Viena datu veida konvertēšanu automātiski veic kompilators, un to sauc par "Type Conversion". |
Lietots | Tipa liešanu var izmantot arī diviem “nesaderīgiem” datu tipiem. | Tipa pārveidošanu var īstenot tikai tad, ja divi datu tipi ir "saderīgi". |
Operators | Lai datu tipu nodotu citam, ir vajadzīgs liešanas operators (). | Nav nepieciešams operators. |
Datu tipu lielums | Galamērķa veids var būt mazāks par avota veidu. | Šeit mērķa tipam jābūt lielākam par avota veidu. |
Īstenots | Tas tiek darīts programmas izstrādes laikā. | Tas tiek darīts tieši, apkopojot. |
Konversijas veids | Samazināšana. | Pārvēršanas paplašināšana. |
Piemērs | int a; baits b; ... ... b = (baits) a; | int a = 3; pludiņš b; b = a; // vērtība b = 3.000. |
Liešanas veida definīcija
Tipa liešana var tikt definēta kā, viena datu veida izlikšana citam datu tipam, ko programmētājs izstrādā programmas izstrādes laikā. Automātiska vienas datu veida konvertēšana uz citu nav iespējama visu laiku. Tas var būt nosacījums, ka “galamērķa tips” ir mazāks par “avota tipu”, tāpēc programmētājam ir jāizvēlas lielāks datu tips mazākajam datu tipam, izmantojot liešanas operatoru “()”. Tā kā lielāks datu tips tiek modulēts uz mazāku datu tipu, to sauc arī par “sašaurināšanos”.
destination_type = (target_type) mainīgais / vērtība // mērķa veids ir veids, kurā vēlaties konvertēt avota veidu, tas vienmēr ir galamērķa veids.
Sapratīsim to ar piemēru. Vēlaties konvertēt datu veidu 'int' uz 'baitu', tagad, jo 'baits' ir mazāks par 'int', tipa pārveidošana nav atļauta. Šeit mums bija netieši jāpārvērš 'int' par 'baitu', izmantojot liešanas operatoru '()'. Tā kā 'int' ir lielāks par "baitu", "int" izmērs tiks samazināts līdz "int mod byte" diapazonam.
int a; baits b; ... ... b = (baits) a;
Kad “pludiņš” tiek pārvērsts par “int”, pludiņa izmērs tiek saīsināts, jo “int” nesaglabā frakcionālo vērtību. Ja galamērķa tipa lielums ir pārāk mazs, lai avota tips varētu ietilpt, tad avota tips ir modulo galamērķa tips “diapazons”. Liešanu var izmantot arī tad, ja datu tipi ir savietojami, labas prakses piemērs ir tipa liešana, kur nepieciešams pārveidot.
Tipa konversijas definīcija
Tipa pārveidošana ir automātiska viena datu veida konvertēšana uz citu, kad tas nepieciešams, ko veic kompilators. Bet pirms tipa pārveidošanas ir jāievēro divi nosacījumi.
- Avota un galamērķa tipam jābūt saderīgam.
- Galamērķa tipam jābūt lielākam par avota veidu.
Šiem diviem nosacījumiem būtu jāatbilst, lai sasniegtu tipa konversiju, un šāda veida konversiju sauc par "paplašināšanas konversiju", jo mazāks tips tiek pārveidots par lielāku tipu, notiek paplašināšanās. Šai paplašināšanas konversijai skaitliskie veidi kā 'int', 'float' ir savietojami, savukārt skaitliski uz char un boolean vai char līdz boolean nav saderīgi.
Š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ārvērsts par “float”, kas ir lielāks par “int”, tāpēc notiek avota veida paplašināšana. Šeit nav nepieciešams neviens liešanas operators, jo kompilators to darīs skaidri.
Galvenās atšķirības starp veida liešanu un pārveidošanu
- Galvenā atšķirība, kas izšķir tipa liešanu no tipa pārveidošanas, ir tā, ka tipa liešana ir viena tipa pārveidošana, ko veic programmētājs. No otras puses, tipa pārveidošana ir viena veida pārveidošana uz citu, ko kompilators veic, apkopojot.
- Tipa liešanu var piemērot datu tipiem, kas var nebūt saderīgi viens ar otru, bet tipa pārveidošanu var piemērot tikai datu tipiem, kas ir savietojami.
- Veicot viena veida pārveidošanu citā tipa liešanā, ir vajadzīgs liešanas operators “()”, bet viena datu veida konvertēšana citam tipa pārveidošanā nav nepieciešama operatoram.
- Pārvēršot vienu datu tipu citā tipa liešanā, galamērķa tips var būt lielāks vai mazāks par avota veidu. No otras puses, galamērķa tipam ir jābūt lielākam par avota veidu tipa konvertēšanā.
- Viena veida konvertēšana uz cita veida tiek veikta, kodējot tipveida liešanā, bet tipa pārveidošanā viena veida pārveidošana uz citu tiek veikta tieši apkopošanas laikā.
- Tipa liešana tiek saukta par sašaurinātu reklāmguvumu, jo šeit galamērķa tips var būt mazāks par avota veidu, bet tipa pārveidošanu sauc par paplašināšanas reklāmguvumu, jo šeit mērķa tipam jābūt lielākam par avota veidu.
Secinājums:
Var secināt, ka tipa pārveidošana un tipa liešana, abi veic uzdevumu pārveidot vienu datu tipu uz citu, bet atšķiras tādā nozīmē, ka tipa liešanu veic programmētājs, izmantojot cast operatoru () un tipa pārveidošanu veic kompilators, un tas neizmanto operatoru.