Összehasonlító táblázat:
Az összehasonlítás alapja | Típusú öntés | Típus konverzió |
---|---|---|
Jelentés | A felhasználó egy adattípust hozzárendel egy másik felhasználóhoz, egy öntött operátort használva, majd "Type Casting" -nek nevezzük. | Az egyik adattípus automatikus konvertálása a fordító által az úgynevezett "Type Conversion". |
Alkalmazott | A típusválasztás két „összeférhetetlen” adattípusra is alkalmazható. | A típus konverzió csak akkor valósítható meg, ha két adattípus „kompatibilis”. |
Operátor | Az adattípus másikra történő öntéséhez egy „()” öntési operátorra van szükség. | Nincs szükség operátorra. |
Az adattípusok mérete | A céltípus kisebb lehet, mint a forrás típusa. | Itt a céltípusnak nagyobbnak kell lennie, mint a forrás típusa. |
Megvalósult | A programtervezés során történik. | Ez kifejezetten a fordítás során történik. |
Konverziós típus | Szűkítés konverzió. | A konverzió bővítése. |
Példa | int a; b bájt; ... ... b = (bájt) a; | int a = 3; úszó b; b = a; // értéke b = 3.000. |
Az öntés meghatározása
A típusválasztás úgy definiálható, mint egy adattípus más adattípusra történő öntése a programozó által a programtervezés idején. Egy adattípus automatikus átalakítása egy másikra nem lehetséges. Előfordulhat, hogy a „céltípus” kisebb, mint a „forrástípus”, így a programozónak a nagyobb adat típusát kifejezetten kisebb adattípusra kell leadnia az öntő operátor „()” használatával. Mivel a nagyobb adattípus kisebb adattípusra van modulálva, úgy is hívják, hogy „szűkítő konverzió”.
A target_type = (target_type) változó / érték // céltípus egy olyan típus, amelyben a forrás típusát konvertálni akarja, amely mindig a céltípus.
Megértjük egy példával. Az 'int' adattípust "bájtra" szeretné konvertálni, most, mivel a "bájt" kisebb, mint "int", a típus konverzió nem megengedett. Itt az „int” -et „bájtra” kellett átkonvertálni az öntő operátor „()” használatával. Mivel az 'int' nagyobb, mint a 'byte', az 'int' mérete az "int mod byte" tartományba csökken.
int a; b bájt; ... ... b = (bájt) a;
Amikor a 'float' 'int' -re van átalakítva, a float mérete csonkított, mivel az 'int' nem tárolja a frakcionált értéket. Ha a céltípus mérete túl kicsi ahhoz, hogy a forrás típusa illeszkedjen, akkor a forrás típusa modulo céltípus "tartomány". Az öntés akkor is alkalmazható, ha az adattípusok kompatibilisek, helyes gyakorlat a típusválasztás használata mindenhol, ahol az átalakításra szükség van.
A típuskonverzió meghatározása
A típusátalakítás az egyik adattípus automatikus átalakítása, ha szükséges, a fordító kifejezetten. A típusváltás előtt azonban két feltételnek kell teljesülnie.
- A forrás- és céltípusnak kompatibilisnek kell lennie.
- A rendeltetési hely típusának nagyobbnak kell lennie, mint a forrás típusa.
A két feltételnek meg kell felelnie a típusátalakítás eléréséhez, és az ilyen átalakítást úgy nevezzük, hogy „szélesítő konverzió” -nak nevezzük, mivel egy kisebb típust nagyobb típusra alakítanak át, a tágítás kiterjed. Ehhez a kiterjesztő konverzióhoz az „int”, „float” numerikus típusok kompatibilisek egymással, míg a numerikus karakterek és a log és a log és boolean értékek szintén nem kompatibilisek.
Ez a példa jobb képet nyújt erről
int a = 3; úszó b; b = a; // értéke b = 3.000.
Itt az 'int' átalakítása 'float'-ra történik, amely nagyobb, mint az' int ', így a forrástípus kiterjesztése történik. Itt nincs szükség öntési operátorra, mivel a fordító kifejezetten megteszi.
A típusválasztás és a konverzió közötti fő különbségek
- Az alapvető különbség, amely megkülönbözteti a típusválogatást a típusátalakítástól, az, hogy a típus-öntés az egyik típus átalakítása a másikra, amit a programozó végez. Másrészről a típusátalakítás az egyik típusnak a másikra történő átalakítása, amit a fordító készít a fordítás során.
- A típusválasztás alkalmazható olyan adattípusokra, amelyek nem kompatibilisek egymással, de a típusátalakítás csak azokra az adattípusokra alkalmazható, amelyek kompatibilisek egymással.
- Az egyik típus másikra történő átalakítása a típusválasztáshoz az „()” öntő operátort igényli, míg az egyik adattípus konvertálása egy másik típusra nem igényel semmilyen operátort.
- Miközben egy adattípust egy másik típusra konvertál, a céltípus nagyobb vagy kisebb lehet, mint a forrás típusa. Másrészt a céltípusnak nagyobbnak kell lennie, mint a típusátalakításnál használt forrástípus.
- Az egyik típus egy másik típusra történő átalakítása a típusú öntés során történik, míg a típusátalakítás során az egyik típus másikra történő átalakítása kifejezetten a fordítás során történik.
- A típusválogatást szűkítő konverziónak nevezzük, mert itt a céltípus kisebb lehet, mint a forrás típusa, míg a típus konverziót szélesítő konverziónak nevezzük, mert itt a céltípusnak nagyobbnak kell lennie, mint a forrás típusa.
Következtetés:
Azt a következtetést lehet levonni, hogy a típusátalakítás és a típusválasztás mindkettőnek az egyik adattípusának egy másikra történő konvertálása, de abban különbözik abban az értelemben, hogy a típusú öntést a programozó végzi, a leadott operátor '()' használatával és a típusátalakítással a fordító, és nem használ operátort.