Još malo o podacima, operatorima, ...
5. Pretvorba tipova podataka
5.3. Zadaci za vježbu
Zadatak 1. Koju će vrijednost poprimiti varijable i, x, c najavljene ovako:
int i, c;double x, d;
nakon naredbi:
d = 10.0;i = (int) (d + 1.23);
x = (float)((int)i + 1);
c = (int)(x += 105.3);
Rješenje:
i = (int)(10.0+1.23)=(int)(11.23)=11x = (float)((int)11+ 1)= (float)(12)=12.00
c = (int)(x += 105.3) → prvo se mijenja x naredbom x+=105.3 što znači x=x+105.3=12.00+105.3=117.3 tek tada se izračunava c=(int)(117.3)=117
Zadatak 2. Ako su najavljene varijable a, b i c na sljedeći način:
int a, b;float c;
kojeg će tipa biti izraz a + b * c?
Rješenje: float
Zadatak 3. Ako su najavljene i inicijalizirane varijable:
int a = 10, b = 3;float c = 12.5;
kojeg tipa mora biti rezultat izraza a / b * c i koji je njegov rezultat?
Rješenje: float i
iznosi 10/3*12.5 = 3*12.5 = 37.500000
Zadatak 4. Ako su najavljene i inicijalizirane varijable:
int a = 10, b = 3;float c = 12.5;
kojeg će tipa biti rezultat izraza a / b * (int)c i koji je njegov rezultat?
Rješenje: Rezultat je tipa int
i iznosi 36.
Zadatak 5. Ako su deklarirane i inicijalizirane varijable:
int a = 14, b = 3;
kojeg će tipa biti rezultati izraza
a) (float)(a / b * (int)c)b) (float)a / b * (int)c
c) (float)(a / b) * c
i koji su njihovi rezultati?
Svi su rezultati tipa float, a iznose
a) (float)(14/3*(int)2.5)= (float)(14/3*2)= (float)(4*2)=8.000000
b) (float)14/3*(int)2.5= 14.00/3*2=4.667*2=9.333333
c) (float)(14/3)*2.5=(float)(4)*2.5=4.00*2.5= 10.000000