Suositeltava, 2024

Toimituksen Valinta

Tyypin valun ja tyypin muuntamisen välinen ero

Kaksi termiä "tyyppivalinta" ja "tyyppimuunnos" tapahtuu, kun on tarpeen muuntaa yksi tietotyyppi toiseen. Kun nämä kaksi tyyppiä ovat keskenään yhteensopivia, kääntäjä tekee automaattisesti yhden tyypin muuntamisen toiseksi. Tyypin muuntaminen ja tyypinvalinta ovat kuitenkin perustavanlaatuisia, eli tyypin muuntaminen suoritetaan kääntäjällä automaattisesti, kun taas ohjelmoija tekee "nimenomaisen" valun. Tarkastellaan eroa sekä tyyppisen valun että muuntamisen vertailukaavion avulla.

Vertailukaavio:

Vertailun perusteetTyyppi CastingTyypin muuntaminen
merkitysKäyttäjä antaa toiselle tietotyypin valukäyttäjää käyttäen, ja sitä kutsutaan "tyypin valuksi".Yhden tietotyypin muuntaminen toiselle automaattisesti kääntäjällä kutsutaan "tyypin muunnokseksi".
soveltavaTyyppivalua voidaan soveltaa myös kahteen ”yhteensopimattomaan” tietotyyppiin.Tyypin muuntaminen voidaan toteuttaa vain, kun kaksi tietotyyppiä ovat "yhteensopivia".
operaattoriTietotyypin siirtämiseksi toiselle on välttämätön valukäyttäjä '()'.Ei operaattoria tarvita.
Tietotyyppien kokoKohdetyyppi voi olla pienempi kuin lähdetyyppi.Tässä kohdetyypin on oltava suurempi kuin lähdetyyppi.
täytäntöönSe tehdään ohjelman suunnittelun aikana.Se tehdään nimenomaan kääntämisen aikana.
Tuloksen tyyppi
Kapeneminen muuntaminen.Muuntamisen laajentaminen.
esimerkkiint a;
tavu b;
...
...
b = (tavu) a;
int a = 3;
float b;
b = a; // arvo b = 3.000.

Määritelmä Casting

Tyyppivalu voidaan määritellä siten, että ohjelmoija tekee yhden tietotyypin toisen datatyypin, ohjelmoinnin aikana. Yhden tietotyypin automaattinen muuntaminen toiselle ei ole mahdollista koko ajan. Se voi olla ehto, että 'kohdetyyppi' on pienempi kuin "lähdetyyppi", joten ohjelmoijan on valettava selkeästi suurempi tietotyyppi pienempään tietotyyppiin käyttämällä valukäyttäjä "()". Koska suurempaa tietotyyppiä moduloidaan pienempään tietotyyppiin, sitä kutsutaan myös "kapenevaksi muunnokseksi".

ilmoitus:

 destination_type = (target_type) muuttuja / arvo // kohdetyyppi on tyyppi, jossa haluat muuntaa lähdetyypin, joka on aina kohdetyyppi. 

Ymmärrämme sen esimerkin avulla. Haluat muuntaa datatyypin 'int' arvoksi 'tavu', nyt kun tavu on pienempi kuin 'int', tyypin muuntaminen ei ole sallittua. Täällä meidän oli implisiittisesti muunnettava 'int' 'tavuksi' käyttämällä valuoperaattoria '()'. Koska 'int' on suurempi kuin 'tavu', 'int': n koko pienenee "int mod byte" -alueeksi.

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

Kun 'float' muunnetaan 'int': ksi, float-koko on lyhennetty, koska 'int' ei tallenna murto-arvoa. Jos kohdetyypin koko on liian pieni, jotta lähdetyyppi mahtuu, lähdetyyppi on modulo-kohteen tyyppi ”alue”. Valua voidaan käyttää myös silloin, kun tietotyypit ovat yhteensopivia, on hyvä käytäntö käyttää tyyppivalua aina, kun tyypin muuntaminen on tarpeen.

Määritelmä tyypin muuntaminen

Tyyppimuunnos on yhden tietotyypin automaattinen muuntaminen toiseen, kun kääntäjä tekee sen tarvittaessa. Mutta on olemassa kaksi edellytystä, jotka on täytettävä ennen tyypin muuntamista.

  • Lähde- ja kohdetyypin on oltava yhteensopivia.
  • Kohdetyypin on oltava suurempi kuin lähdetyyppi.

Näiden kahden edellytyksen tulisi täyttää tyypin muuntamisen saavuttamiseksi, ja tällaista muuntamista kutsutaan "laajennusmuunnokseksi", koska pienempi tyyppi muunnetaan suuremmaksi tyypiksi, tyypin laajeneminen tapahtuu. Tätä laajenevaa muunnosta varten numeeriset tyypit 'int', 'float' ovat yhteensopivia keskenään, kun taas numeerinen merkki char ja boolean tai char to boolean ei myöskään ole yhteensopiva.

Tämä esimerkki antaa paremman kuvan tästä

 int a = 3; float b; b = a; // arvo b = 3.000. 

Tässä 'int' muunnetaan 'floatiksi', joka on suurempi kuin 'int', joten lähdetyypin laajeneminen tapahtuu. Täällä ei tarvita valuoperaattoria, koska kääntäjä tekee sen nimenomaisesti.

Tyypin valun ja muuntamisen keskeiset erot

  1. Perusero, joka erottaa tyypinvalinnan tyypin muuntamisesta, on se, että tyypin valaminen on yhden tyypin muuntaminen toiselle, jonka ohjelmoija tekee. Toisaalta tyypin muuntaminen on yhden tyypin muuntaminen toiselle, jonka kääntäjä tekee kääntämisen aikana.
  2. Tyyppivalua voidaan soveltaa tietotyyppeihin, jotka eivät ehkä ole yhteensopivia toistensa kanssa, mutta tyyppimuunnosta voidaan soveltaa vain tietotyyppeihin, jotka ovat keskenään yhteensopivia.
  3. Yhden tyypin muuntaminen toiselle tyypinvalussa vaatii valuoperaattorin "()", kun taas yhden tietotyypin muuntaminen toiselle tyypin muuntamisessa ei vaadi operaattoria.
  4. Kun muunnetaan yksi tietotyyppi toiselle tyypinvalussa, kohdetyyppi voi olla suurempi tai pienempi kuin lähdetyyppi. Toisaalta kohdetyypin on oltava suurempi kuin lähdetyyppi tyypin muuntamisessa.
  5. Yhden tyypin muuntaminen toiselle tyypille suoritetaan koodauksen aikana tyypinvalussa, kun taas tyypin muuntamisessa yhden tyypin muuntaminen toiselle suoritetaan nimenomaisesti kokoamisen aikana.
  6. Tyyppivalua kutsutaan kapenevaksi muunnokseksi, koska tässä kohdetyyppi voi olla pienempi kuin lähdetyyppi, kun taas tyypin muuntamista kutsutaan laajennusmuunnokseksi, koska tällöin kohde-tyypin on oltava suurempi kuin lähdetyyppi.

johtopäätös:

Voidaan päätellä, että tyypin muuntaminen ja tyypin valu, molemmat suorittavat yhden datatyypin muuntamisen toiselle, mutta eroavat toisistaan ​​siinä mielessä, että ohjelmoija tekee tyypinvalun käyttämällä valukäyttäjää '()' ja tyypin muuntaminen tapahtuu kääntäjä, eikä se käytä mitään operaattoria.

Top