Kiértékelési konverziók I
Ha egy numerikus operátor két különböző típusú egész értékre akarjuk végrehajtani, akkor a két típust egyeztetni kell végrehajtás előtt.
Az egyeztetés szabályai(Amennyiben mindkét operandus típusa egész (de különböző egész) ):
- ha a két típus eltérő tárolási igényű, akkor a nagyobb tárigényű típus lesz a közös típus.
- Konkrétabban: char -> short int -> int -> long int
- a két tárigény egyforma, akkor az előjeles lesz a közös típus, vagyis unsigned xy -> signed xy.
Kiértékelési konverziók II
Ha egy numerikus operátor két különböző típusú numerikus értéke akarjuk végrehajtani, akkor a két típust egyeztetni kell végrehajtás előtt. A két különböző típus ez esetben csakis a float és a double lehet. Ekkor a float-ot átalakítja a fordító double értékre, és a két double között hatja végre az operátor.
Ha a két numerikus érték közül az egyik egész, a másik valós, akkor az egész típust alakítja a fordító lebegőpontossá, és a két valós típus között hajtja végre a műveletet.
A kifejezés operátorokból, és megfelelő számú operandusból épül fel. Jellemzője, hogy kiértékelhető, és a kiértékelés eredménye egyetlenegy érték. Ezen érték típusát a kifejezés típusának nevezzük.
Egy kifejezés típusa mindig meghatározható, és minden operandus-érték esetén ugyanaz marad.
Az explicit típuskonverzió során egy-egy kifejezésben szereplő érték típusát megváltoztatjuk. Ennek során az értéket képviselő operandus elé az új típus nevét leírjuk zárójelben:
int a = 12;
double b = (double)a*2;
A fenti példában a ’12’ értéket double-ra változtattuk.
Nem minden típusú értékből lehet explicit módon valamely más típusú értéket készíteni.
Az implicit típuskonverzió során egy kifejezésben szereplő érték típusát a fordítóprogram önállóan, önhatalmúlag megváltoztatja valamely más típusra. Ehhez a program kódjába a programozónak nem kell jelölnie semmit.
Nem minden típusú értékből lehet implicit módon valamely más típusú értéket készíteni.