Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Dacã cei doi operanzi diferã ca tip atunci tipul “inferior” este automat promovat la<br />
tipul “superior” <strong>în</strong>ainte de efectuarea operatiei. Un tip T1 este superior unui tip T2<br />
dacã toate valorile de tipul T2 pot fi reprezentate <strong>în</strong> tipul T1 fãrã trunchiere sau<br />
pierdere de precizie. Ierarhia tipurilor aritmetice din C este urmãtoarea:<br />
char < short < int < long < long long < float < double < long double<br />
Subexpresiile cu operanzi <strong>în</strong>tregi dintr-o expresie care contine si reali au rezultat<br />
<strong>în</strong>treg, deoarece evaluarea subexpresiilor se face <strong>în</strong> etape. Exemple:<br />
float x = 9.8, y = 1/2 * x; // y=0.<br />
y= x / 2; // y=4.9;<br />
In <strong>limbajul</strong> C existã operator de atribuire ‘=‘, iar rezultatul expresiei de atribuire<br />
este valoarea atribuitã (copiatã). In partea stângã a unei atribuiri se poate afla o<br />
variabilã sau o expresie de indirectare printr-un pointer; <strong>în</strong> partea dreaptã a<br />
operatorului de atribuire poate sta orice expresie. Exemple:<br />
k=1; i=j=k=0; d = b*b-4*a*c; x1=(-b +sqrt(d))/(2*a);<br />
La atribuire, dacã tipul pãrtii stânga diferã de tipul pãrtii dreapta atunci se face<br />
automat conversia de tip (la tipul din stânga), chiar dacã ea necesitã trunchiere sau<br />
pierdere de precizie. Exemplu:<br />
int a; a= sqrt(3.); // a=1<br />
Exemplu de conversii dorite de programator:<br />
float rad,grd,min; // radiani, grade, minute<br />
int g,m; // nr intreg de grade, minute<br />
grd = 180*rad/M_PI; // nr de grade (neintreg)<br />
g=grd; // sau g= (int)grd;<br />
min=60*(grd-(float)g); // min=60*(grd-g)<br />
m=min; // sau m= (int)min;<br />
Conversiile automate pot fi o sursã de erori (la executie) si de aceea se preferã<br />
conversii explicite prin operatorul de conversie (“cast”= fortare tip), care are forma<br />
(tip) si se aplica unei expresii. Exemple:<br />
float x; int a,b;<br />
x= (float)a/b; // câtul exact<br />
float x; int k;<br />
k= (int)(x+0.5); // rotunjire x la intregul apropiat