Ero tyyppivalun ja tyyppimuunnoksen välillä
Sisältö
- Vertailutaulukko:
- Määritelmä Tyyppi Casting
- esimerkki
- Määritelmä Tyypin muuntaminen
- esimerkki
- johtopäätös:
Perusero tyyppimuunnoksen ja tyyppivalun välillä, ts. Tyyppimuuntaminen tehdään kääntäjällä ”automaattisesti”, kun taas ohjelmoija tekee tyyppivalun ”nimenomaisesti”.
Kaksi termiä "tyypin valu" ja "tyypin muuntaminen" tapahtuvat, kun on tarpeen muuntaa yksi tietotyyppi toiseksi. Kun nämä kaksi tyyppiä ovat yhteensopivia keskenään, kääntäjä muuntaa yhden tyypin toiseksi. Keskustelemme sekä tyyppivalun että muunnoksen eroista vertailutaulun avulla.
- Vertailutaulukko
- Määritelmä
- Keskeiset erot
- johtopäätös
Vertailutaulukko:
Vertailun perusteet | Tyyppi Casting | Tyypin muuntaminen |
---|---|---|
merkitys | Käyttäjä on määrittänyt yhden tietotyypin toiselle käyttäjälähetysoperaattorin avulla, ja sitä kutsutaan "Type Casting". | Yhden tietotyypin muuntaminen kääntäjäksi automaattisesti nimeltään "Tyyppimuuntaminen". |
soveltava | Tyyppivalintaa voidaan soveltaa myös kahteen yhteensopimattomaan tietotyyppiin. | Tyyppimuutos voidaan toteuttaa vain, kun kaksi tietotyyppiä ovat yhteensopivia. |
operaattori | Tietotyypin lähettämiseksi toiselle vaaditaan valuuttaoperaattori (). | Operaattoria ei tarvita. |
Tietotyyppien koko | Kohdetyyppi voi olla pienempi kuin lähdetyyppi. | Kohdetyypin on tällöin oltava suurempi kuin lähdetyyppi. |
täytäntöön | Se tehdään ohjelman suunnittelun aikana. | Se tehdään nimenomaisesti käännettäessä. |
Muunnostyyppi | Kapeneva muuntaminen. | Laajentuva muuntaminen. |
esimerkki | int a; tavu b; ... ... b = (tavu) a; | int a = 3; kellua b; b = a; // arvo b: ssä = 3 000. |
Määritelmä Tyyppi Casting
Tyyppi casting voidaan määritellä nimellä, että ohjelmoija valaisee tietotyypin toiselle tietotyypille ohjelman suunnittelun aikana. Tietotyypin automaattinen muuntaminen toiseen ei ole mahdollista jatkuvasti. Voi olla ehto, että kohdetyyppi on pienempi kuin lähdetyyppi. Siksi ohjelmoijan on siirrettävä suurempi tietotyyppi nimenomaisesti pienemmälle tietotyypille casting-operaattorin '()' avulla. Koska suurempi tietotyyppi moduloidaan pienemmäksi tietotyypiksi, sitä kutsutaan myös 'kaventavaksi muunnokseksi'.
ilmoitus:kohde_tyyppi = (kohde_ tyyppi) muuttuja / arvo // kohdetyyppi on tyyppi, jonka haluat muuntaa lähdetyypin, se on aina kohdetyyppi.
esimerkki
Ymmärretään se esimerkillä. Haluat muuntaa tietotyypin 'int' tavuksi. Nyt, koska 'tavu' on pienempi kuin 'int', tyypin muuntaminen ei ole sallittua. Täällä meidän piti implisiittisesti muuntaa 'int' 'tavuksi' käyttämällä lähetysoperaattoria '()'. Koska 'int' on suurempi kuin 'tavu', 'int' koko pienenee 'int mod tavu' -alueeksi.
int a; tavu b; ... ... b = (tavu) a;
Kun ”kellua” muunnetaan “int”, kelluu koko lyhenee, koska ”int” ei tallenna murto-arvoa. Jos kohdetyypin koko on liian pieni lähdetyypin sovittamiseksi, lähdetyyppi on modulo määränpäätyyppi 'alue'. Suoratoistoa voidaan käyttää myös, kun tietotyypit ovat yhteensopivia. On hyvä käytäntö käyttää tyyppivalua missä tahansa tyypin muuntamista tarvitaan.
Määritelmä Tyypin muuntaminen
Tyyppimuutos on kääntäjän nimenomaisesti suorittama tietotyypin automaattinen muuntaminen toiseen tarvittaessa. Mutta ennen tyyppimuuntamista on täytettävä kaksi ehtoa.
- Lähteen ja määränpään tyypin on oltava yhteensopivia.
- Kohdetyypin on oltava suurempi kuin lähdetyyppi.
Näiden kahden ehdon tulee täyttyä tyyppimuunnoksen saavuttamiseksi, ja tällaista muunnosta kutsutaan ”laajenevaksi muunnokseksi”, koska pienempi tyyppi muutetaan suuremmiksi, ja tyypin laajentuminen tapahtuu. Tätä laajempaa muuntamista varten numeeriset tyypit, kuten 'int', 'kelluvat', ovat yhteensopivia keskenään, vaikka numeerinen merkiksi char ja boolean tai char to boolean eivät myöskään ole yhteensopivia.
esimerkki
Tämä esimerkki antaa paremman kuvan tästä
int a = 3; kellua b; b = a; // arvo b: ssä = 3 000.
Täällä 'int' muunnetaan 'kelluvaksi', joka on suurempi kuin 'int', joten lähdetyyppi laajenee. Tässä ei vaadita casting-operaattoria, koska kääntäjä tekee sen nimenomaisesti.
- Perusero, joka erottaa tyyppivalun tyyppimuuntamisesta, on, että tyyppivalu on ohjelmoijan suorittama tyypin muuntaminen toiseksi. Toisaalta tyyppimuutos on muuntaja yhden tyypin toiseksi, jonka kääntäjä tekee kääntämisen aikana.
- Tyyppivalua voidaan soveltaa tietotyyppeihin, jotka eivät välttämättä ole yhteensopivia keskenään. Toisaalta tyyppimuunnosta voidaan soveltaa vain toisiinsa yhteensopiviin tietotyyppeihin.
- Yhden tyypin muuntaminen toiseksi tyyppivalussa edellyttää valu operaattoria “()”, kun taas tietotyypin muuntaminen toiseksi tyyppimuunnossa ei vaadi operaattoria.
- Kun muunnetaan yksi tietotyyppi toiseksi tyyppivaluissa, kohdetyyppi voi olla suurempi tai pienempi kuin lähdetyyppi. Toisin kuin kohdetyypin on oltava suurempi kuin lähdetyyppi tyyppimuunnossa.
- Yhden tyypin muuntaminen toiseksi tyypiksi tapahtuu koodaamalla tyyppivalussa. Sitä vastoin tyyppimuunnossa yhden tyypin muuntaminen toiseksi tapahtuu nimenomaisesti kokoamisen aikana.
- Tyyppivalua kutsutaan kaventavaksi muuntamiseksi, koska tässä kohdetyyppi voi olla pienempi kuin lähdetyyppi. Toisin kuin tyyppimuunnosta kutsutaan laajenevaksi muuntamiseksi, koska tässä kohdetyypin on oltava suurempi kuin lähdetyyppi.
johtopäätös:
Voidaan päätellä, että tyyppimuuntaminen ja tyyppivalu suorittavat molemmat tietotyypin muuntamisesta toiseen, mutta eroavat toisistaan siinä mielessä, että tyyppivalun suorittaa ohjelmoija käyttämällä cast operaattoria () 'ja tyyppimuuntamista suorittaa kääntäjä , ja se ei käytä mitään operaattoria.