File: Stare vježbe/vjezbe02/09__aritmetika_razliciti.c
/* 09__aritmetika_razliciti.c Djelovanje aritmetickih operatora na razlicitim tipovima Implicitne i eksplicitne konverzije */ #include <stdio.h> int main () { int i=2, j=5, k; float f=9.876, g; double d=1.234; /* zbrojimo dvije varijable tipa int i pridruzimo je varijabli tipa float */ g=i+j; /* podijelimo dvije varijable tipa int i pridruzimo je varijabli tipa float */ g=i/j; /* zakljucak: prvo se izvedu aritmeticke operacije, te se nakon toga izvrsi implicitna konverzija */ /* da bismo dobili zeljeni rezultat i/j potrebno je izvrsiti eksplicitnu konverziju jednog od operanada na tip float ili double */ /* eksplicitna konverzija vrsi se pomocu cast operatora */ g=(float)i/j; printf("g=(float)i/j: %g\n", g ); /* u slijedecem primjeru prvo se float konvertira u double, dva doublea se zbroje, te se nakon toga dobiveni double konvertira (s gubitkom!) u int (jer je varijabla k tipa int) */ k=f+d; f=0.7; g=0.8; /* prvo se sve tri varijable zbroje kao doubleovi (dakle, doslo je do implicitne konverzije varijabli f i i u double), te se nakon toga dobiveni rezultat kovertira u int */ k=f+g+i; /* prvo se varijable f i g eksplicitno konvertiraju u int, te dani zbroj intova bez gubitka sprema u varijablu k (koja je tipa int) */ k=(int)f+(int)g+i; return 0; }
|