Soovitatav, 2022

Toimetaja Valik

Tüübi valamise ja tüübi teisenduse erinevus

Kaks mõistet "tüübivalimine" ja "tüübi teisendamine" tekivad siis, kui on vaja teisendada üks andmetüüp teiseks. Kui need kaks tüüpi on omavahel ühilduvad, teeb kompilaator ühe tüübi teisendamise teisteks. Tüüpide teisendamise ja tüübivaliku vahel on siiski põhiline erinevus, st tüübi teisendamine toimub kompilaatori poolt automaatselt, samas kui tüübivalmistamist peab programmeerija tegema „selgesõnaliselt”. Arutagem võrdluse diagrammi abil nii tüübi valamise kui ka konversiooni erinevust.

Võrdluskaart:

Võrdluse alusTüüp CastingTüübi teisendamine
TähendusKasutaja määrab teisele andmesidetüüpi, kasutades valatud operaatorit, seejärel nimetatakse seda "tüübikinnituseks".Ühe andmetüübi teisendamist automaatselt kompilaatori poolt nimetatakse "tüübi teisendamiseks".
RakendatudTüüpvalu võib kasutada ka kahe „kokkusobimatu” andmetüübi puhul.Tüübi teisendamist saab rakendada ainult siis, kui kaks andmetüüpi on „ühilduvad”.
OperaatorAndmetüübi teisele valamiseks on vajalik valamisoperaator ().Operaatorit ei nõuta.
Andmetüüpide suurusSihttüübi tüüp võib olla allika tüübist väiksem.Siinkohal peab sihtkoha tüüp olema suurem kui lähtetüüp.
RakendatudSeda tehakse programmi kavandamisel.Seda tehakse selgesõnaliselt koostamise ajal.
Konversioonitüüp
Kitsendamine.Teisendamise laiendamine.
Näideint a;
bait b;
...
...
b = (bait) a;
int a = 3;
float b;
b = a; // väärtus b = 3.000.

Mõiste Casting määratlus

Tüüpvalu võib defineerida kui ühe andmetüübi valimist teisele andmetüübile, programmeerija poolt programmi koostamise ajal. Ühe andmetüübi automaatne teisendamine teiseks, ei ole kogu aeg võimalik. See võib olla tingimus, et „sihtkoha tüüp” on väiksem kui „lähtetüüp”, mistõttu peab programmeerija valatud operaatorit „()” kasutades andma selgesõnaliselt väiksema andmetüübi suurema andmeliigi. Kuna suurem andmetüüp on modifitseeritud väiksema andmetüübiga, nimetatakse seda ka kitsenevaks konversiooniks.

Deklaratsioon:

 destination_type = (target_type) muutuja / väärtus // sihtliik on tüüp, milles soovite lähtetüübi teisendada, see on alati sihtkoha tüüp. 

Mõelgem selle näitega. Soovite teisendada andmetüübi 'int' 'baitiks', nüüd, kuna 'bait' on väiksem kui 'int', ei ole tüübivahetus lubatud. Siinkohal pidime me „int” kaudselt teisendama “baitiks”, kasutades valamise operaatorit „()”. Kuna 'int' on suurem kui "bait", väheneb "int" suurus "int mod byte" vahemikuks.

 int a; bait b; ... ... b = (bait) a; 

Kui 'float' konverteeritakse 'int'-ks, siis ujuki suurus kärbitakse, kuna' int 'ei salvesta murdväärtust. Kui sihtkoha tüüp on liiga väike, et lähtetüüp sobiks, siis on allika tüüp modulo sihtkoha tüüp "vahemik". Valu võib kasutada ka siis, kui andmetüübid on ühilduvad, on hea tava valimine alati, kui vaja on tüübihindamist.

Tüübi teisendamise mõiste

Tüüpide teisendamine on ühe andmeliigi automaatne teisendamine teisele, kui see on vajalik, kompilaatori poolt otseselt tehtud. Kuid enne tüübi teisendamist tuleb täita kaks tingimust.

  • Allika ja sihtkoha tüüp peab olema ühilduv.
  • Sihtkoha tüüp peab olema suurem kui lähtetüüp.

Need kaks tingimust peaksid vastama tüübi muundamise saavutamiseks ja seda tüüpi konversiooni nimetatakse laiendatavaks konversiooniks, kuna väiksemat tüüpi muudetakse suuremaks tüübiks, tekib tüübi laienemine. Selle laiendava konversiooni jaoks on numbrilised tüübid nagu 'int', 'float' üksteisega kokkusobivad, samas kui numbriline kuni char ja boolean või char kuni boolean pole samuti ühilduvad.

See näide annab sellest parema ülevaate

 int a = 3; float b; b = a; // väärtus b = 3.000. 

Siin konverteeritakse 'int' 'float'iks, mis on suurem kui' int ', seega toimub allika tüübi laiendamine. Siin ei nõuta valamise operaatorit, sest kompilaator teeb seda selgesõnaliselt.

Tüübi Casting ja Conversion vahelised peamised erinevused

  1. Põhiline erinevus, mis eristab tüübivalimist tüübi teisendamisest, on see, et tüübivalimine on ühe tüübi teisendamine teisele, mida teeb programmeerija. Teisest küljest on tüübi teisendamisel tegemist ühe tüübi teisendamisega teiseks, mida kompilaator teeb koostamise ajal.
  2. Tüübi valimist saab rakendada andmesidetüüpidele, mis ei pruugi olla omavahel ühilduvad, kuid tüübi teisendamist saab rakendada ainult üksteisega ühilduvate andmeside tüüpide puhul.
  3. Ühe tüübi muutmine tüübivalimises nõuab valamise operaatorit „()”, samal ajal kui ühe andmetüübi teisendamine teiseks tüübivahetuseks ei vaja operaatorit.
  4. Ühe andmetüübi teisendamisel tüübivalimisel võib sihttüüp olla suurem või väiksem kui allika tüüp. Teisest küljest peab sihttüüp olema suurem kui lähtetüüp tüübi teisendamisel.
  5. Ühe tüübi muundamine teiseks tüübiks toimub tüübivalimises kodeerimise ajal, samas kui tüübi teisendamisel toimub ühe tüübi teisendamine teisele koostamisel.
  6. Tüübi valimist nimetatakse kitsendavaks konversiooniks, kuna siinkohal võib sihtkoha tüüp olla väiksem kui lähtetüüp, samas kui tüübi teisendamist nimetatakse laiendatavaks konversiooniks, sest siinkohal peab sihtkoha tüüp olema allikatüübist suurem.

Järeldus:

Võib järeldada, et tüübihindamine ja tüübivalimine täidavad mõlemat ülesannet ühe andmetüübi teisendamiseks teiseks, kuid erinevad selles mõttes, et tüübivalimine toimub programmeerija poolt, kasutades valatud operaatorit () ja tüübi teisendamist teeb kompilaator ja see ei kasuta ühtegi operaatorit.

Top