Informatică, întrebare adresată de andriesboss92, 9 ani în urmă

Ce inseamna i++ si ++i. Care este diferenta dintre acestea?

Unde si cand se atribuie aceste variabile?

Răspunsuri la întrebare

Răspuns de blindseeker90
9
Ambele operatii au acelasi rezultat vina: i este incrementat cu 1 i+=1, dar modul in care este evaluata acea incrementare in expresii e important
Daca ai operatorul i++ incrementarea se face dupa evaluarea expresiei respective. Daca ai operatorul ++i, atunci incrementarea se face pe loc
De exemplu, o expresie ar putea sa fie citita la consola cout<<i<<" "
O sa observi ca pentru i=1 daca folosesti cout<<i++<<" "; atunci o sa iti afiseze rezultatul 1(deja afisarea se face, dar incrementarea lui i se produce dupa aceea)
                      cout<<++i<<" " atunci incrementarea se face pe loc si afisarea se va face dupa aceea, asa ca rezultatul afisat este 2   

#include <iostream>
using namespace std;

int main(){

int a=1,b=1,n=5,i=0;
while(n>0){
n--;
cout<<a++<<endl;
cout<<++b<<endl;
}
cout<<"Valori finale!"<<endl;
cout<<a<<endl;
cout<<b<<endl;
return 0;
}



andriesboss92: Si daca ar fi i-- sau --i , e acelasi efect, doar ca inversat? Adica, daca i=6, folosind i-- afiseaza 5 4 3 2 ... ? sau cum..
blindseeker90: Ar fi exact acelasi lucru numai ca ai avea valori mai mici. La valori finale, este important de vazut ca a si b au la final aceeasi valoare. Doar atunci cand sunt evaluate intr-o expresie conteaza cum este incrementat/decrementat
andriesboss92: Cum adica: "conteaza cum este incrementat/decrementat". Adica depinde de ce valori primeste?
blindseeker90: Ma refeream daca este operator ++ sau --. Daca rulezi exemplul, o sa fie clar. Poti sa setezi a si b cu valoarea 10 si sa faci decrementare si o sa observi acelasi fenomen
andriesboss92: Aaaaa ... am inteles acuma . Deci cand e i++ creste valoarea lui i afisand inclusiv cea initializata si cand e ++i tot creste valoarea lui i doar ca nu mai afiseaza valoarea data in "int". Si daca e i-- sau --i e acelasi procedeu doar ca se scad valorile.
artur99: Sau ai putea să o iei și mai simplu, ca o funcție (i++) returnează valoarea lui i înainte de incrementare, și (++i) returnează valoarea de după, bănuiesc, nu? :))
andriesboss92: Da, dar e mai usor, pentru mine, cum am zis :)) Plus ca am nevoie si de exemple concrete ca sa inteleg singur de ce aia si nu aia, daca intelegi ce spun :D
Alte întrebări interesante