fbpx

Care este diferenta intre i++ si ++i ?

0

i++ sau ++i in C++ ?

Salutare prieteni si bine v-am regasit. Astazi vom discuta despre diferenta intre ++i si i++ , un concept simplu dar totusi destul de incurcat in informatica.

Ati observat probabil in diferite rezolvari ale problemelor de algoritmica, sau in diferite proiecte faptul ca uneori se foloseste i++ si alte ori ++i. Trebuie sa intelegem care este diferenta intre aceste doua atriburi pentru a le folosii corect atunci cand este cazul!

i++

Aceasta operatie returneaza valoarea lui i, iar mai apoi ii incremeneteaza valoarea. Sa luam urmatorul exemplu:

int i = 10;
int j = i++;
cout << i << " " << j;

Pe ecran o sa ni se afiseze 11 10 deoarece valoarea lui i a fost incrementata in cea de a doua linie, iar valoarea lui j a ramas 10, deoarece i-a fost atribuita valoarea lui i, iar mai apoi aceasta valoare a fost incrementata.

 

++i

Aceasta operatie o sa incrementeze mai intai valoarea lui i, iar mai apoi o va returna. Haideti sa luam exemplul de mai sus si sa schimbam variabila j.

int i = 10;
int j = ++i;
cout << i << " " << j;

Acum pe ecran o sa ni se afiseze 11 11 deoarece valoarea lui i a fost incrementata, iar j a primit valoarea actualizata a lui i, deoarece mai intai a avut loc incrementarea, iar mai apoi atribuirea.

 

i++ sau ++i folosit in for

for(int i = 0; i < 10; i++)
    cout << i << " ";

cout << "\n";

for(int i = 0; i < 10; ++i)
    cout << i << " ";

Observam in schimb faptul ca atunci cand il folosim intr-un for, nu se observa nici o schimbare a comportamentlui, ambele variante afisand aceleasi valori. In practica, ++i este mai intalnit deoarece este metoda cea mai folosita in The C Programming Language una dintre primele carti ce descrie limbajul C.

Exista mai demult o discutie despre „eficienta” celor doua metoda, dar in ziua de azi compilatoarele se ocupa de aceste cazuri. Asa ca sfatul meu este sa nu va bateti capul cu viteza de executie si sa folositi oricare varianta se potriveste cazului vostru.

Comentarii
Se incarca comentariile...

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More