Sunteți pe pagina 1din 4

Operatorii

Operatorii pot fi:


- unari - se aplică unui singur operand
- binari – se aplică la doi operanzi
Limbajul C++ este dotat cu un set puternic de operatori: aritmetici, relaţionali, de egalitate, de
incrementare/decrementare, logici, logici pe biţi, de atribuire, virgulă, condiţional, sizeof, de conversie
explicită.

Operatorii aritmetici
- pot fi unari: +, -

binari: +, -, *, /, %
*inmultire
/ impartire
% (modulo) restul împărţirii întregi
Obs: - la împărţire dacă ambii operanzi sunt întregi atunci rezultatul este întreg. Rezultatul este corect din
punct de vedere matamatic dacă operanzii au valori pozitive. Dacă cel putin unul din operanzi este real
rezultatul va fi real.
- “ %” acţionează numai asupra operanzilor de tip întreg. Rezultatul este corect din punct de vedere
matematic dacă operanzii sunt numere naturale.
În cazul în care se împart douǎ numere întregi se procedeazǎ astfel:
 Se face împǎrţirea celor 2 valori care sunt considerate în modul
 Semnul câtului sau restului se stabileşte dupǎ regula semnelor
Operatorii relaţionali
<, <=, >, >=
Rezultatul unei operaţii logice este 1, în cazul în care inegalitatea este respectată şi 0 în caz contrar.
Operanzii pot fi : constante, variabile, funcţii care returnează tipuri numerice.
Ex: 2<3 => 1 (adevarat)
3<1 => 0 (fals)
Operatorii de egalitate

== (egalitate)
!= (inegalitate, diferit)
Rezultatul este 0 sau 1, iar operanzii pot fi: constante, variabile, funcţii.
Ex: 3==3 => 1
2!=2 => 0

Operatorii de incrementare/decrementare
++ (incrementare)
-- (decrementare)
Aceşti operatori sunt unari şi au rolul de a incrementa (adună 1) sau decrementa (scad 1) conţinutul
unei variabile. Operatorii pot fi prefixaţi (aplicaţi în faţa/după operandului) sau postfixaţi (aplicaţi după
operand).
Ex: Fie a o variabilă de tip int.
++a; //operatorul de incrementare prefixat
--a; //operatorul de decrementare prefixat
a++; //operatorul de incrementare postfixat
a--; //operatorul de decrementare postfixat
Obs: - dacă operatorul este prefixat variabila este incrementată/decrementată înainte ca valoarea reţinută de
ea să intre în calcul
- dacă operatorul este postfixat variabila este incrementată/decrementată după ce valoarea reţinută
de ea intra în calcul

7
Ex 1) int a=6;
.…………..
5+a++; //se calculează 5+6, apoi se incrementează valoarea lui a deci a=7
5-++a; // se incrementează valoarea lui a deci a=8, apoi se calc 5-8=-3
Ex 2) int a=1,b=3;
…………….
a++*b++; //se calculează 1*3, apoi a=2,b=4
++a*++b; //a=3,b=5, apoi se calculează 3*5=15

Operatorii logici:
! (negare logică – operator unar)
&& (şi logic – operator binar)
|| (sau logic – operator binar)
O valoare diferita de 0 este considerate cu valoarea 1.

a !a a b a&&b a||b Operatorul && (binar) actioneaza astfel:


daca ambii operanzi sunt diferii de 0, rezultatul este 1,
0 1 0 0 0 0 altfel el este 0.
1 0 0 1 0 1
1 0 0 1 Operatorul | | (binar) actioneaza astfel:
daca cel puin unul din operanzi este o valoare diferita de 0,
1 1 1 1 rezultatul este 1, altfel rezultatul e 0.

Ex: int a=1,b=3,c=0; Regulile lui Morgan


!(a&&b)= !a || !b
a&&b; // are val 1 !(a || b)=!a && !b
b&&c; // are val 0
Obs:
 la operatorul &&: dacǎ operandul din stânga este 0, nu se mai evalueazǎ şi operandul din dreapta,
oricum rezultatul este 0
 la operatorul ||: dacǎ operandul din stânga este 1, nu se mai evalueazǎ şi operandul din dreapta,
oricum rezultatul este 1

Operatorii de atribuire
=
*=, /=, %=, +=, -=
Operatorul de atribuire, în forma cea mai simplă, se notează prin caracterul “=”. El se utilizează în
expresii de forma:
v=expresie
Principiul de execuţie:
- se evaluează expresie
- variabilei v i se atribuie valoarea obţinută(dacă este cazul se efectuează conversia respectivă)
În general o expresie de atribuire are forma:
vn= vn-1 =………=v1=v=expresie;
Principiul de execuţie:
- se evaluează expresie
- variabilei v i se atribuie valoarea obţinută (dacă este cazul se efectuează conversia respectivă)
- conţinutul variabilei v i se atribuie variabilei v1 (dacă este cazul se efectuează conversia respectivă)
…………………………………………
- conţinutul variabilei vn-1 i se atribuie variabilei vn (dacă este cazul se efectuează conversia respectivă)
Pentru atribuire, în afara semnului = se mai poate folosi şi succesiunea de caractere:
op=
unde op poate fi unul din operatorii: *, /, %, +, -
O atribuire de forma:
v op=expresie este echivalentă cu v=v op(expresie)
Ex: s=s+i; se mai poate scrie s+=i;
8
p=p*i; se mai poate scrie p*=i;
Operatorul virgulă
se utilizează în situaţii în care într-un anumit punct
al unui program este necesar să se realizeze un calcul complex exprimat prin mai multe expresii. In general,
o construcţie de forma:
exp1, exp2,….., expn
(unde exp1, exp2,….., expn sunt expresii) este o expresie a carei valoare şi tip coincide cu valoarea şi tipul
lui expn.
Principiul de execuţie: expresiile se evaluează pe rând, de la stânga la dreapta.
Ex: int a=1, b=5;
float c;
Expresia c=a=b+1, a=c+2, b=b+1 se evaluează astfel:
- se efectuează atribuirea multiplă: b+1=6,a=6,c=6;
- c+2=8, a=8
- b+1=6, b=6
- expresia produce valoarea 6 (valoarea ultimei expresii, adică a lui b)

Operatorul condiţional
– se foloseşte în expresii de genul:
exp1?exp2:exp3
Principiul de execuţie:
- Se evaluează exp1
- Dacă aceasta produce o valoare diferită de zero, se evaluează exp2 şi expresia condiţională va avea
tipul şi valoarea lui exp2
- altfel se evaluează exp3, şi expresia condiţională va avea tipul şi valoarea lui exp3.
Operatorii condiţionali sunt ? şi : , ei se folosesc totdeauna împreună şi în ordinea indicată de formatul
expresiei condiţionale.
Ex: maximul dintre a şi b
(a>b) ? a : b

Operatorul dimensiune
sizeof – returnează numărul de octeţi utilizaţi pentru memorarea unei valori (este un operator unar).
Poate fi folosit sub forma:
sizeof(expresie) sau sizeof(tip)
obs: expresia nu este evaluată.
Ex: int a;
sizeof(a)=4 cout<<"Un int este memorat pe "<,sizeof(int)<<" octeti.\n";
Ex: char c; cout<<"Un float este memorat pe "<,sizeof(float)<<" octeti.\n";
cout<<"Un char este memorat pe "<,sizeof(char)<<" octeti.\n";
sizeof(c)=1
Ex: int x; double y;// int pe 4 octeti, double pe 8 octeti, va returna nr maxim de octeti
sizeof(x+y)=8
Ex: int x=5;
sizeof(++x)=4;//!!! valoarea lui x nu este modificata pt. ca nu se eval. expresia

Operatorul de conversie explicită https://www.pbinfo.ro/articole/26007/conversii-de-tip-in-cpp


- intre paranteze inaintea operandului se trece tipul spre care dorim sa facem conversia
Ex:
a) float x=-1.9; b) int a=3,b=6;
(int) x=-1 (float)a/b=0.5
float(a)/b=0.5
a/(b*1.0)=0.5
9
Expresii

Se numeste expresie o succesiune de operatori si operanzi legati intre ei, dupa reguli
specifice limbajului. Operanzii pot fi: constant, variabile si functii.
Pentru evaluarea unei expesii trebuie sa cunoastem:
 Prioritatea (precedenta) operatorilor – indica ordinea in care se efectueaza operatiile
 Asociativitatea operatorilor – este de doua feluri de la stanga la dreapta (→) si de la dreapta
la stanga (←)

Operator Utilizare Semnificatie Asociativitate

() f(e) apel functie


[] t[i] indexare
. s.c selectie

-> p->c selectie indirecta
-- a-- postdecrementare
++ a++ postincrementare
- -v schimbare semn
+ +v plus unar ( fara efect)
-- --a predecrementare
++ ++a preincrementare
! !i negatie logica ←
* *p adresare indirecta
& &a preluare adresa
sizeof sizeof(x) determinare dimensiune ( in octeti )
() (d) e conversie de tip ( cast )
* v1*v2 inmultire
/ v1/v2 impartire
% v1%v2 rest impartire ( modulo )
+ v1+v2 adunare
- v1-v2 scadere
< v1<v2 mai mic →
<= v1<=v2 mai mic sau egal
> v1>v2 mai mare
>= v1>=v2 mai mare sau egal
== v1==v2 egal
!= v1!=v2 diferit
&& i1&&i2 si logic ( conjunctie )
|| i1||i2 sau logic ( disjunctie )
?: i?v1:v2 operator conditional ( ternar )
=
*= /= a=v atribuire ←
%= a*=v variante ale operatorului de atribuire
+= -=
, e1,e2 secventiere →

10

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