Ieteicams, 2024

Redaktora Izvēle

Atšķirība starp tipa liešanu un tipa pārveidošanu

Abi termini „tipa liešana” un “tipa pārveidošana” notiek, kad ir nepieciešams pārveidot vienu datu tipu uz citu. Ja abi veidi ir savietojami, tad kompilators automātiski veic viena veida konvertēšanu uz citu. Tomēr pastāv būtiska atšķirība starp tipa pārveidošanu un tipa liešanu, ti, kompilators veic tipa pārveidošanu „automātiski”, bet tipa liešana ir „skaidri jādara” programmētājam. Apspriedīsim atšķirību, salīdzinot gan ar modeļa liešanu, gan konversiju ar salīdzinājuma diagrammas palīdzību.

Salīdzināšanas diagramma:

Salīdzinājuma pamatsTipa liešanaTipa konvertēšana
NozīmeLietotā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".
LietotsTipa 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".
OperatorsLai datu tipu nodotu citam, ir vajadzīgs liešanas operators ().Nav nepieciešams operators.
Datu tipu lielumsGalamērķa veids var būt mazāks par avota veidu.Šeit mērķa tipam jābūt lielākam par avota veidu.
ĪstenotsTas 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ērsint 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”.

Deklarācija:

 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

  1. 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.
  2. 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.
  3. 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.
  4. 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ā.
  5. 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ā.
  6. 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.

Top