Különbség a típusöntés és a típuskonverzió között
Tartalom
- Összehasonlító táblázat:
- A típusöntés meghatározása
- Példa
- A típuskonverzió meghatározása
- Példa
- Következtetés:
A típuskonverzió és a típusöntés közötti alapvető különbség, azaz a típuskonverziót a fordító automatikusan végzi, míg a típusöntést a programozónak kifejezetten meg kell tennie.
A „típus casting” és a „type conversion” két kifejezés akkor fordul elő, amikor szükség van az egyik adattípus konvertálására a másikra. Ha a két típus kompatibilis egymással, akkor az egyik típus konvertálását automatikusan a fordító hajtja végre. Beszéljük meg az összehasonlító táblázat segítségével a típusöntés és az átalakítás különbségeit.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat:
Az összehasonlítás alapja | Típus Casting | Típuskonverzió |
---|---|---|
Jelentés | Az egyik adattípust a felhasználó hozzárendel egy másikhoz egy cast operátor segítségével, majd "Type Casting" -nek hívják. | Az egyik adattípus automatikus fordítása a másikra a fordító által "Type Conversion" néven történik. |
Alkalmazott | A típusos átküldés két nem kompatibilis adattípusra is alkalmazható. | A típuskonverzió csak akkor valósítható meg, ha két adattípus kompatibilis. |
Operátor | Adattípus átküldéséhez egy adatátviteli operátorra () van szükség. | Nincs szükség operátorra. |
Az adattípusok mérete | A rendeltetési hely lehet kisebb, mint a forrás típus. | Itt a rendeltetési hely típusának nagyobbnak kell lennie, mint a forrás típusának. |
Megvalósult | Ezt a program tervezése során végzik. | Ez kifejezetten történik a fordítás során. |
Konverziós típus | Szűkítő konverzió. | Széles körű átalakulás. |
Példa | int a; b byte; ... ... b = (byte) a; | int a = 3; úszó b; b = A; // érték b-ben = 3.000. |
A típusöntés meghatározása
Típus casting meghatározható úgy, hogy az egyik adattípus átvitele egy másik adattípusra a programozó által a program tervezésének idején. Az egyik adattípus automatikus konvertálása a másikra nem mindig lehetséges. Feltétel lehet, hogy a „rendeltetési hely típusa” kisebb, mint a „forrás típus”. Ezért a programozónak a nagyobb adattípust kifejezetten kisebb adattípusra kell leadnia a '()' casting operátor használatával. Mivel a nagyobb adattípus a kisebb adattípusra modulálódik, akkor azt is „szűkítő konverziónak” hívják.
Nyilatkozat:Destination_type = (target_type) változó / érték // céltípus olyan típus, amelyben meg akarja konvertálni a forrás típusát, mindig a rendeltetési hely típusa.
Példa
Megértjük egy példával. Az „int” adattípust „byte” -vá szeretné konvertálni. Most, mivel a „byte” kisebb, mint az „int”, a típus konvertálása nem engedélyezett. Itt az „int” -et implicit módon „bájtmá” kellett átalakítani az „()” casting operátor használatával. Mivel az „int” nagyobb, mint az „byte”, az „int” mérete „int mod byte” tartományra csökken.
int a; b byte; ... ... b = (byte) a;
Amikor az „úszót” átalakítják „int” -re, az úszó mérete csonkolódik, mivel az „int” nem tárolja a tört értékét. Ha a rendeltetési hely típusa túl kicsi ahhoz, hogy a forrás típus beleférjen, akkor a forrás típusa modulo rendeltetési típusú „tartomány”. Az átküldés akkor is alkalmazható, ha az adattípusok kompatibilisek. Jó gyakorlat a típusöntés, ha bármilyen típusú átalakításra van szükség.
A típuskonverzió meghatározása
Típuskonverzió az egyik adattípus automatikus konvertálása a másikra, ha szükséges, kifejezetten a fordító által. De a típuskonverzió előtt két feltételnek kell teljesülnie.
- A forrás és a cél típusának kompatibilisnek kell lennie.
- A rendeltetési hely típusának nagyobbnak kell lennie, mint a forrás típusának.
Ennek a két feltételnek teljesülnie kell a típuskonverzió eléréséhez, és ezt a fajta konverziót „kibővítő konverziónak” nevezzük, mivel egy kisebb típust nagyobb típusúvá alakítunk, és a típus kiszélesedése történik. A kiterjedt átalakításhoz az „int”, „float” numerikus típusok kompatibilisek egymással, míg a numerikus char és a logikai vagy a char a logikai érték szintén nem kompatibilis.
Példa
Ez a példa jobb képet ad erről
int a = 3; úszó b; b = A; // érték b-ben = 3.000.
Itt az „int” átalakul „float” -ra, amely nagyobb, mint az „int”, tehát a forrás típusa kiszélesedik. Itt nincs szükség casting operátorra, mivel a fordító ezt kifejezetten megteszi.
- Az alapvető különbség, amely megkülönbözteti a típusöntést és a típuskonverziót, az, hogy a típusöntés az egyik típusnak a másikvá történő átalakítása, amelyet a programozó hajt végre. Másrészt a típuskonverzió az egyik típus átalakítása a másikra, amelyet a fordító végez fordítás közben.
- A típusöntés alkalmazható az adattípusokra, amelyek esetleg nem kompatibilisek egymással. Ezzel szemben a típuskonverzió csak az egymással kompatibilis adattípusokra alkalmazható.
- Az egyik típus átváltása típusöntésben a „()” casting operátor megköveteli, míg az egyik adattípus konvertálása a típus átalakításában egyetlen operátort sem igényel.
- Míg az egyik adattípust a másikba konvertálja a típusos casting során, a cél típusa nagyobb vagy kisebb lehet, mint a forrás típusa. Ezzel szemben a rendeltetési helynek nagyobbnak kell lennie, mint a forrás típusának a típuskonverzióban.
- Az egyik típus átváltása egy másik típusba a kódolás közben történik. Ezzel szemben a típus átalakításánál az egyik típus átalakítása kifejezetten az összeállítás során történik.
- A típusöntést szűkítő konverziónak nevezzük, mert itt a cél típusa kisebb lehet, mint a forrás típus. A típuskonverziótól eltérően szélesebb konverziónak nevezzük, mert itt a rendeltetési helynek nagyobbnak kell lennie, mint a forrástípusnak.
Következtetés:
Megállapítható, hogy a típuskonverzió és a típusú casting egyaránt végrehajtják az egyik adattípus másikra konvertálásának feladatát, de abban az értelemben különböznek egymástól, hogy a type castingot a programozó hajtja végre, az cast operator () segítségével, a típus konvertálást pedig a fordító hajtja végre. , és nem használ semmilyen operátort.