ATRIBUIREA UNEI VALORI
Atribuirea este o expresie , ea producand un rezultat . In practica atribuirea poate apare intr-un sir de instructiuni :
x=y=z=10;
Rezultatul acestei instructiuni este initializarea celor trei variabile cu valoarea 10 .
Partea din dreapta a unei expresii de atribuire este intotdeauna calculata inainte de a avea loc atribuirea propriu-zisa . Acest lucru face posibila folosirea unei expresii de felul urmator :
int x=5;
x=x+2;
Logic se calculeaza intai x+2 , rezultatul fiind 7 si apoi aceasta valoare este atribuita variabilei x .
Atribuirea este operatia cea mai des intalnita in programare si in consecinta au aparut mai multi operatori speciali pentru diferite cazuri de atribuire . Mai jos vom vedea operatorii de atribuire speciali precum si echivalentele functionale ale acestora :
X+=Y X=X+Y
X-=Y X=X-Y
X*=Y X=X*Y
X/=Y X=X/Y
Acesti operatori de atribuire sunt echivalenti perfect cu instructiunile pe care le inlocuiesc dar trebuie avuta mare atentie la utilizarea lor ; in cazul folosirii acestor operatori in cadrul unor expresii mai complexe exista cazuri in care acesti operatori nu mai sunt echivalenti . Ca exemplu putem lua situatia urmatoare :
X=20; Y=5;
X=X/Y+5; si
X/=Y+5;
Rezultatele celor doua instructiuni vor fi diferite : in primul caz rezultatul va fi 9 iar in cel de-al doilea 2 .
INCREMENTAREA SI DECREMENTAREA
O alta operatie uzuala in programare este adaugarea sau scaderea unei unitati dintr-o variabila intreaga . Exista operatori speciali pentru aceste expresii - operatori numiti de incrementare si decrementare .
Incrementarea unei variabile inseamna a adauga 1 la valoarea sa iar decrementarea unei variabile inseamna a scadea 1 din valoarea sa .
Operatorul de incrementare este " ++ " iar cel pentru decrementare este " - " . Acesti operatori sunt plasati imediat inainte sau dupa numele unei variabile :
int X=7;
X=X++;
In exemplul de mai sus variabila X este incrementata de la 7 la 8 .
In cazul in care operatorii de incrementare sau decrementare sunt plasati inaintea variabilei atunci ei se numesc operatori prefix iar in cazul in care apar dupa variabila se numesc operatori sufix .
Intr-o expresie simpla , de exemplu variabila-- , folosirea unui operator prefix sau sufix nu schimba rezultatul . Atunci cand operatiunile de incrementare sau decrementare fac parte dintr-o expresie mai complexa optiunea intre prefix si sufix devine importanta .
Sa comentam putin exemplul de mai jos :
int x,y,z;
x=42; y=x++ ; z=++x ;
Aceste doua expresii produc rezultate diferite din cauza diferentelor intre operatorii sufix si prefix . Atunci cand folosim operatori sufix , ca in y=x++ , variabila y primeste valoarea lui x inainte ca aceasta sa creasca cu 1 astfel incat y va fi egal cu 42 ; la folosirea operatorilor prefix , ca in z=++x , variabila x este mai intai incrementata si apoi valoarea sa este atribuita lui y , astfel incat z va avea valoarea 44 .
Ca si incazul operatorilor speciali de atribuire trebuie avuta mare grija in cazul folosirii operatorilor de incrementare si decrementare in cazul unor expresii mai complexe - existand posibilitatea introducerii unei erori destul de greu de depistat in cadrul programului .