Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 1

Załóżmy, że wykonamy dwa alternatywne fragmenty kodu:


int value = 0;
value = value++;

--------------------

int value = 0;
value = ++value;

   
Patrząc z pewnego punktu widzenia, można by przypuszczać, że zapisy te będą dawać jednakowy wynik, ponieważ w obu przypadkach inkrementujemy zmienną "value" i moment przypisania nie powinien mieć znaczenia. Jednak w momencie wykonywania powyższych operacji najpierw tworzona jest kopia zmiennej "value" na stosie. Inkrementacja jest wykonywana na kopii, a nie na oryginale. Potem w pierwszym przypadku następuje przypisanie i inkrementacja, a w drugim najpierw jest inkrementacja, a dopiero później przypisanie.

W efekcie, w pierwszym przypadku otrzymamy wartość 0, a w drugim 1.

  • Odpowiedział
  • @ | 25.06.2013
  • TRENER ALTKOM AKADEMII