Još malo o podacima, operatorima, ...

5. Pretvorba tipova podataka

5.2. Zadana ili eksplicitna pretvorba tipova podataka

Ako je potrebno „zaobići” automatsku pretvorbu, moguće ju je zadati eksplicitno. Tada takva pretvorba ima viši prioritet, a to znači da će se obaviti bez obzira na pravila za automatsku pretvorbu. U takvim se slučajevima koristi operator eksplicitne pretvorbe, tzv. cast operator. Opći oblik izraza za eksplicitnu pretvorbu je

(tip podataka) operand;   

Zagrade su oznake cast operatora, a operand može biti varijabla, konstanta ili neki izraz.

Primjerice, ako je varijabla d tipa double, i tipa int, a f tipa float, pri izvršavanju naredbe

    i = (int)(d+1.234);

nakon računanja izraza d+1.234 koji je tipa double, rezultatu se odbacuje decimalni dio i cijeli se dio pridružuje varijabli i.

Za iste varijable, prilikom izračunavanja izraza

     f=(float)((int)d+1);

najprije se varijabli d zanemaruje decimalni dio, zbog cast operatora ispred nje (int)d, nakon toga se dobivena cjelobrojna vrijednost povećava za 1 i nakon toga pretvara u realan broj koji se pridružuje varijabli f.

Primjer

Koju će vrijednost poprimiti varijabla i nakon naredbi:

int i;
double d = 124.56;
i = d;

a)       i = 124.56
b)      i = 124
c)       i = 125
d)      zbog različitosti tipova podataka izraz je pogrešan

 

Rješenje: b), jer cjelobrojna vrijednost koja se pridružuje varijabli i dobije se odbacivanjem, a ne zaokruživanjem decimalnog dijela.