Sunteți pe pagina 1din 7

Expresii 53

3. Expresii

O expresie n limbajul C, este formata dintr-un operand (sau mai multi)


legati prin operatori.

3.1 Operanzi:

Operanzii pot fi:


- o constanta;
- o constanta simbolica;
- numele unei variabile simple;
- numele unui tablou;
- numele unei nregistrari (structuri);
- numele unui tip;
- numele unei functii;
- referirea la elementul unui tablou ( Ex.: a[i];)
- referirea la elementul unei structuri;
- apelul unei functii;
- expresie introdusa ntre paranteze rotunde.
Unui operand i corespunde un tip si o valoare. Daca tipul operandului
este bine precizat la compilare ,valoarea operandului se determina fie la
compilare fie la executie.
Ex.: 1) 1234
2) oxa1b2
3) float a1b2;// variabila simpla
4) int tab[10]
tab[2]
Observatie: tab - numele tabloului. Este de tip adresa de ntregi de tip int(
pointer to int)
5) sum (n,x);
6) (expresie)

3.2. Operatori
54 Programarea calculatoarelor

Operatori pot fi: - unari se aplica unui singur operand;


- binari se aplica la doi operanzi.
Operatorii se grupeaza n mai multe clase: operatori aritmetici, relationali,
logicietc.
La evaluarea unei expresii se tine seama de prioritatile operatorilor, de
asociativitatea operatorilor , de aceiasi prioritate si de regula conversiilor
implicite.
3.2.1.Operatori aritmetici

Sunt:
a. Unari: + (nu are nici un efect),- (negativare); (asociativitate dreapta -
stnga);
b. Binari multiplicativi: *, /, % (asociativitate stnga - dreapta);
c. Binari aditivi: + , - (asociativitate stnga dreapta).
Ex.: 7/3 - 2
7%3 1
Daca operanzi unui operator binar au acelasi tip t, atunci rezultatul va
avea tipul t.

3.2.2.Regula conversiilor implicite

Se aplica la evaluarea expresiilor. Actioneaza atunci cnd un operator binar se


aplica la doi operanzi de tipuri diferite. Operandul de tip inferior se
converteste spre tipul superior si rezultatul este de tip superior. Regula
presupune si niste conversii implicite, independent de operatori. Ea se aplica n
mai multi pasi n ordinea de mai jos:
0.char si enum n tipul int;
1.Daca un operand este longdouble atunci rezultatul este longdouble;
2.Altfel daca un operand este de tipul double atunci rezultatul este de
tip double;
3.Altfel,daca un operand este de tipul float atunci rezultatul este de tip
float;
4.Altfel,daca un operand este de tipul unsigned long, atunci rezultatul
este de tip unsigned long;
Expresii 55

5.Altfel,daca un operand este de tipul long, atunci rezultatul este de


tipul long;
6.Altfel,daca un operand este de tipul unsigned, atunci rezultatul este
de tip unsigned.

3.2.3.Operatori de relatie

< - mai mic;


> - mai mare;
<= - mai mic sau egal;
>= - mai mare sau egal.
O expresie de forma:
E1 <operator relatie> E2
Are una din variabile 0 (false) sau 1 (true).

3.2.4.Operatorii de egalitate

= = - egal
! = - diferit

3.2.5.Operatorii logici

! - negatia logica (operator unar)


&& - si logic
|| - sau logic
Ex.: an bisect an%4= =0&& an%100!=0 || an% 400= =0
an[1600,4900].

3.2.6.Operatori logici pe biti

- complement fata de 1(unar)


<< - deplasare stnga
>> - deplasare dreapta
& - si logic pe biti
56 Programarea calculatoarelor

^ - sau exclusiv pe biti


| - sau pe biti
Observatie: operanzii se considera pe 16 biti!

3.2.7.Operatori de atribuire

v = <expresie>; v variabila simpla, element de structura sau de


tablou. Va avea ca si valoare, valoarea care i se atribuie ,iar ca tip tipul
variabilei v.
O constructie de forma: vn ==v1 =v = expresie este corecta.
Observatie: Expresiile de forma: v=.=v<op.><op.2> unde, <op.> este unul
din operatorii : /,%, *, - ,+ , << , >> , & , ^ ,| , se pot scrie sub forma:
V<op.>=<op.2>
Ex.: a=a+3 a+=3

3.2.8.Operatorii de incrementare si decrementare

a) ++<operand> - incrementare <operand>=<operand>+1


--<operand> - decrementare <operand>=<operand>-1
Observatie: n expresia n care se foloseste valoarea operandului dupa
aplicarea operatorului.
b)<operand> ++
<operand> --
Observatie: n expresia n care se foloseste valoarea operandului nainte de
aplicarea operatorului respectiv.
Ex.: x=3
y=++x x=4,y=4
y=x++ x=4,y=3

3.2.9.Operatorul de fortare a tipului sau de conversie explicita


(expresie cast)

(tip) operand valoarea operandului se converteste la tip.


Ex.: void f(double);
int n;
Expresii 57


f((double)n);

3.2.10 Operatorul dimensiune

sizeof <data> sau sizeof (data) sau sizeof (tip)


unde:
- data: - nume de variabila simpla
- nume de tablou
- nume de structura
- element de tablou
- element de structura
- tip: - un cuvnt cheie a unui tip predefinit
- o constructie care defineste un tip
Ret: dimensiunea n octeti a elementului respectiv

3.2.11 Operatorul adresa

& nume adresa variabilei nume

3.2.12 Operatorul paranteza

( expresie)
- se schimba ordinea de efectuare a operatiilor
Observatie: Nu se poate aplica la ++,--, op. adresa

3.2.13 Operatorii conditionali ?, :

e1?e2:e3
unde: e1,e2,e3 expresii
DACA e1 True ATUNCI e2 ALTFEL e3;
Ex.: (a>b)?a:b

3.2.14 Operatorul virgula


58 Programarea calculatoarelor

Leaga doua expresii n una singura


e1,e2 (binar) (st. dr.)
Constructia de mai sus este o expresie. Valoarea sa coincide cu val. si tipul lui
e2.
Observatie: Constructiile
(e1,e2),e3 si e1,e2,e3 sunt corecte
Observatie: Operatorul , se utilizeaza n situatii n care ntr-un anumit punct al
unui program n care este legal sa se foloseasca o expresie, este necesar sa se
realizeze un calcul complex exprimat prin mai multe expresii.

3.2.15 Alti operatori

- * (unar) acces la continutul unei zone de memorie definita prin


adresa sa de la nceput
- ., - acces la elementul unei structuri

3.2.16 Prioritatile operatorilor n C

()[].
+(unar)-(unar)&(unar)* unar ++ -- (tip) sizeof! ~ dr st
* /
+ -
<< >>
< <= >= >
= = |=
&
^
|
&&
||
Expresii 59

?: dr st
= <<= >>= += -= *= /= &= ^= |= dr st ,
Observatie: Restul operatorilor se asociaza st dr.

S-ar putea să vă placă și

  • Prezentul Simplu
    Prezentul Simplu
    Document14 pagini
    Prezentul Simplu
    Scribdmultimedia
    Încă nu există evaluări
  • Valoarea Crucii: Aprilie 2012
    Valoarea Crucii: Aprilie 2012
    Document32 pagini
    Valoarea Crucii: Aprilie 2012
    Scribdmultimedia
    Încă nu există evaluări
  • 2012 - 2
    2012 - 2
    Document32 pagini
    2012 - 2
    Scribdmultimedia
    Încă nu există evaluări
  • Pune Si... Sare
    Pune Si... Sare
    Document15 pagini
    Pune Si... Sare
    Szasz Andrei
    Încă nu există evaluări
  • Ca Mai 2016 Site PDF
    Ca Mai 2016 Site PDF
    Document32 pagini
    Ca Mai 2016 Site PDF
    Scribdmultimedia
    Încă nu există evaluări
  • Ca 1 2016 Site
    Ca 1 2016 Site
    Document32 pagini
    Ca 1 2016 Site
    Scribdmultimedia
    Încă nu există evaluări
  • August
    August
    Document30 pagini
    August
    Scribdmultimedia
    Încă nu există evaluări
  • Mai
    Mai
    Document30 pagini
    Mai
    Scribdmultimedia
    Încă nu există evaluări
  • Publicatie AZS
    Publicatie AZS
    Document30 pagini
    Publicatie AZS
    Scribdmultimedia
    Încă nu există evaluări