Tüübi castingu ja tüübi teisendamise erinevus

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 4 Mai 2024
Anonim
Tüübi castingu ja tüübi teisendamise erinevus - Tehnoloogia
Tüübi castingu ja tüübi teisendamise erinevus - Tehnoloogia

Sisu


Põhiline erinevus tüübi teisendamise ja tüübi valimise vahel, st tüübi teisendamine toimub kompilaatori poolt "automaatselt", samas kui tüübi valimise peab programmeerija tegema "sõnaselgelt".

Kaks terminit „tüüpi ülekandmine” ja „tüübi muundamine” esinevad siis, kui on vaja teisendada üks andmetüüp teiseks. Kui need kaks tüüpi on üksteisega ühilduvad, teeb kompilaator automaatselt ühe tüübi teisendamise teiseks. Arutleme võrdlemistabeli abil erinevat tüüpi ülekandmist ja teisendamist.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm:

Võrdluse alusTüüp CastingTüübi teisendus
TähendusKasutaja omistab ühe andmetüübi teisele, kasutades ülekandeoperaatorit, seejärel nimetatakse seda "tüüpi ülekandmiseks".Ühe andmetüübi teisendamine kompilaatori poolt teiseks nimetatakse tüübi muundamiseks.
RakendatudTüübi ülekandmist saab rakendada ka kahe ühildumatu andmetüübi korral.Tüübi teisendamist saab rakendada ainult siis, kui kaks andmetüüpi on ühilduvad.
OperaatorAndmetüübi ülekandmiseks teisele on vaja ülekandeoperaatorit ().Operaatorit pole vaja.
Andmetüüpide suurusSihtkoha tüüp võib olla väiksem kui lähtetüüp.Siin peab sihtkoha tüüp olema suurem kui lähtetüüp.
RakendatudSeda tehakse programmi kujundamise ajal.Seda tehakse kompileerimise ajal selgesõnaliselt.
Konversiooni tüüp

Kitsenev teisendus.Laienev muundamine.
Näideint a;
baidi b;
...
...
b = (bait) a;
int a = 3;
ujuk b;
b = a; // väärtus b-s = 3 000.


Tüüpi castingu määratlus

Tüüp casting Seda saab määratleda kui ühe andmetüübi ülekandmist teisele andmetüübile programmeerija poolt programmi koostamise ajal. Ühe andmetüübi automaatne teisendamine teiseks pole kogu aeg võimalik. Võib juhtuda, et sihtkoha tüüp on väiksem kui lähtetüüp. Seetõttu peab programmeerija valima suurema tüübi andmetüübi otsesõnu väiksemale andmetüübile, kasutades ülekandeoperaatorit (). Kuna suurem andmetüüp on modifitseeritud väiksemaks andmetüübiks, nimetatakse seda ka konversiooni kitsendamiseks.

Deklaratsioon:

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

Näide

Mõistagem seda näitega. Soovite teisendada andmetüübi „int” „baidiks”. Kuna bait on väiksem kui int, pole tüübi teisendamine lubatud. Siinkohal pidime „int” kaudselt teisendama „baitiks”, kasutades ülekandeoperaatorit „()”. Kuna „int” on suurem kui „bait”, vähendatakse „int” suurust vahemikku „int mod bait”.


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

Kui „ujuk” teisendatakse väärtuseks „int”, kärbitakse ujuki suurus, kuna int ei salvesta murdarvu. Kui sihtkoha tüüp on liiga väike, et lähtetüüp sobivaks sobiks, on lähtetüübiks modulo sihtkoha tüüp 'vahemik'. Ülekandmist saab kasutada ka siis, kui andmetüübid on ühilduvad. Hea tava on kasutada tüübivalamist kõikjal, kus tüüpi muutmist on vaja.

Tüübi teisendamise määratlus

Tüübi teisendus on vajaduse korral ühe andmetüübi automaatne teisendamine teiseks, mille teeb kompilaator selgesõnaliselt. Kuid enne tüübi muutmist peavad olema täidetud kaks tingimust.

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

Need kaks tingimust peaksid tüübi teisendamise saavutamiseks olema täidetud ja seda tüüpi teisendust nimetatakse laiendavaks teisenduseks, kuna väiksem tüüp teisendatakse suuremaks tüübiks ja toimub tüübi laienemine. Selle laieneva teisenduse korral on numbrilised tüübid „int”, „float” ühilduvad, samas kui numbriline sümbol char ja loole või char to boolean pole samuti ühilduvad.

Näide

See näide annab sellest parema ülevaate

int a = 3; ujuk b; b = a; // väärtus b-s = 3 000.

Siin muundatakse „int” väärtuseks „ujuk”, mis on suurem kui „int”, seega toimub allika tüübi laienemine. Siin pole castingu operaator vajalik, kuna kompilaator teeb seda selgesõnaliselt.

  1. Põhiline erinevus, mis eristab tüübivalamist tüübi muundamisest, on see, et tüübivalamine on ühe tüübi teisendamine teiseks, mille teostab programmeerija. Teisest küljest on tüübi teisendamine ühe tüübi teisendamine teiseks, mille teeb kompilaator kompileerimise ajal.
  2. Tüübi ülekandmist saab rakendada andmetüüpidele, mis ei pruugi üksteisega ühilduda. Vastupidiselt saab tüübi teisendamist rakendada ainult üksteisega ühilduvate andmetüüpide suhtes.
  3. Tüüpi castingus ühe tüübi teisendamine teiseks nõuab casting operaatorit “()”, samas kui ühe andmetüübi teisendamine tüübi teisendusel teiseks ei vaja operaatorit.
  4. Tüübi ülekandmisel ühe andmetüübi teisendamisel teisendamisel võib sihtkoha tüüp olla suurem või väiksem kui lähtetüüp. Vastupidiselt sellele peab sihtkoha tüüp olema tüübi teisendamisel suurem kui lähtetüüp.
  5. Ühe tüübi teisendamine teiseks tüübiks toimub kodeerimisel tüübivalamisel. Seevastu tüübi teisendamisel toimub ühe tüübi teisendamine teisendamise käigus selgesõnaliselt.
  6. Tüübi ülekandmist nimetatakse kitsendavaks teisenduseks, kuna siin võib sihtkoha tüüp olla väiksem kui lähtetüüp. Erinevalt tüübikonversioonist nimetatakse laiendavat teisendust, kuna siin peab sihtkoha tüüp olema suurem kui lähtetüüp.

Järeldus:

Võib järeldada, et tüübi teisendamine ja tüübi ülekandmine täidavad mõlemad ülesandeid teisendada üks andmetüüp teiseks, kuid erinevad selles mõttes, et tüübi ülekandmise teeb programmeerija, kasutades ülekandeoperaatorit () ja tüübi teisendamist teeb kompilaator. , ja see ei kasuta ühtegi operaatorit.