Documente Academic
Documente Profesional
Documente Cultură
Am nvat cum s declarm variabile, cum s definim constante, cum s scriem corect n C++... acum e timpul s vedem
cum putem opera cu variabilele.
Nu trebuie s memorai toate nebuniile din acest tutorial (i nici din alte tutoriale)!
a:?,
a:10,
a:10,
a:4,
a:4,
b:?
b:?
b:4
b:4
b:7
Operatorii Aritmetici
C++ dispune de urmtoarele operaii aritmetice:
+ adunare
- scdere
* nmulire
/ mprire
% modulo
11
Modulo (sau Mod) este operaia care calculeaz restul mpririi unui numr la alt numr.
Exemplu: 11 % 3 va fi 2.
Operatorii unari folosesc un singur operand. Cei binari folosesc doi operanzi (mai sus avei operatori binari).
Cnd vrei s efectuai o operaie asupra valorii curente a unei variabile putei folosi operatorii de atribuire compus.
1a
2a
3
4b
5b
Echivalent cu
a = a - 5;
a /= b;
a = a / b;
x *= y + 1;
x = x * (y + 1);
12
Afiarea
n C++ tiprirea rezultatelor se face folosind o variabil special numit cout mpreun cu operatorul de inserie (<<).
1cout << "Hello World!";
Instruciunea de sus afieaz caracterele Hello World! la dispozitivul standard de ieire, de obicei ecranul.
Variabila cout este predefinit n C++ i semnific un flux de ieire. Acesta poate fi imaginat ca o secven nesfrit de
caractere care merg ctre dispozitivul de ieire (aici fiind ecranul).
Operatorul de inserie << (put to) folosete 2 operanzi. Cel din stnga este o expresie flux (stream) (de exemplu cout).
n dreapta se afl irul sau expresia al crei rezultat trebuie afiat.
De remarcat faptul c operatorul << arat sensul n care circul datele: dinspre expresie sau string nspre streamul de
ieire. Operatorul << poate fi folosit de mai multe ori ntr-o singur instruciune de afiare:
1cout << "Hello!" << "Wassup" << a * b; // a, b - doua variabile oarecare
Pentru a tiprii linii separate scriem:
1cout << "Hello" << endl;
2cout << "World";
3// sau mai simplu
4cout << "Hello" << endl << "World";
Identificatorul endl (end line) este un element special din C++ care permite terminarea unei linii i continuarea scrierii pe
linia urmtoare.
Sau putei folosi secvena escape '\n':
1cout << "Hello\nWorld";
13
=
Egal cu
=
!= Diferit de
> Mai mare ca
<
Mai mic ca
>
Mai mare sau egal cu
=
<
Mai mic sau egal cu
=
Exemple:
1(7
2(5
3(3
4(6
5(5
== 5)
> 4)
!= 2)
>= 6)
< 5)
//
//
//
//
//
se
se
se
se
se
evalueaza
evalueaza
evalueaza
evalueaza
evalueaza
la
la
la
la
la
FALSE
TRUE
TRUE
TRUE
FALSE
//
//
//
//
se
se
se
se
evalueaza
evalueaza
evalueaza
evalueaza
la
la
la
la
FALSE
TRUE
FALSE
TRUE
Operatorii logici
Operatorul NOT (!) se insereaz n faa expresiei. Acesta inverseaz rezultatul boolean al expresiei. Adic? Exemplu...
!(5 == 5)
1inverseaza
2!(6 <= 4)
3!true
//
4
!false
//
14
a &&
b
true
true
true
false false
false true
true
false
OR - SAU (||)
true
true
true
false true
false true
a || b
true
true
&& - dac expresia din stnga este false, atunci rezultatul va fi false (partea din dreapta nu este
evaluat)
|| - dac expresia din stnga este true, atunci rezultatul va fi true (partea din dreapta nu este
evaluat)
Aceast scurttur este cunoscut ca short-circuit evaluation.
1( (5 == 5) && (3 > 6) )
2( (5 == 5) || (3 > 6) )
15
//
//
//
//
returneaza
returneaza
returneaza
returneaza
Prioritatea operatorilor
Se respect prioritatea nmulirii i a mpririi (parantezele au prioritate superioar), dar mai bine studiai acest tabel de
prioriti (de la cea mai mare la cea mai mic prioritate). Prin prioritate (preceden) m refer la ordinea n care este
evaluat fiecare operator, adic cine este evaluat primul i cine ultimul (ntr-o expresie).
Nivel
Operator
Descriere
scope
Grupare
Stnga-ladreapta
::
unar (prefix)
indirectare i referin
(pointeri)
unar de semn
Dreapta-lastnga
(type)
conversie explicit
Dreapta-lastnga
Stnga-ladreapta
16
.* ->*
pinter-ctre-membru
Stnga-ladreapta
*/%
multiplicativi
Stnga-ladreapta
+-
adiionali
Stnga-ladreapta
<< >>
deplasare
Stnga-ladreapta
relaional
Stnga-ladreapta
10
== !=
de egalitate
Stnga-ladreapta
11
&
bitwise AND
Stnga-ladreapta
12
bitwise XOR
Stnga-ladreapta
13
bitwise OR
Stnga-ladreapta
14
&&
logical AND
Stnga-ladreapta
15
||
logical OR
Stnga-ladreapta
16
?:
condiional
Dreapta-lastnga
17
atribuire (asignare)
Dreapta-lastnga
18
virgul
Stnga-ladreapta
Expresiile aritmetice sunt formate din constante, variabile, operatori i paranteze. Ordinea n care sunt realizate operaiile
este stabilit conform regulilor de preceden.
Regulile de preceden se aplic i operatorilor logici i relaionali.
n coloana Grupare este definit ordinea de grupare (Asociativitatea) atunci cnd n aceeai expresie apar mai muli
operatori cu aceeai preceden.
Cnd nu suntei siguri de ordinea operaiilor, cel mai bine este s folosii parantezele (). Observai c au un nivel mare de
prioritate (nivelul 2).
Folosind parantezele, se poate schimba ordinea de evaluare a expresiei.
Expresii i Conversii
Prin combinarea operanzilor i a operatorilor se obin expresii. Tipul unei expresii este dat de tipul rezultatului obinut n
urma evalurii acesteia. La evaluarea unei expresii se aplic regulile de prioritate i asociativitate a operatorilor din
expresie. Ordinea de aplicare a operatorilor poate fi schimbat prin folosirea parantezelor.
Conversiile automate sunt realizate de ctre compilator. Ele sunt realizate de fiecare dat cnd ntr-o expresie apar
operanzi de tipul char sau int.
Conversiile cerute de evaluarea expresiilor sunt efectuate n cazurile n care n expresii apar operanzi de tipuri diferite.
naintea aplicrii operatorilor, se realizeaz conversia unuia sau a ambilor operanzi.
Conversiile explicite (cerute de programator) se realizeaz cu ajutorul construciilor cast (vezi mai sus).
Dac este ceva neclar, lsai un mesaj!
17