Dlaczego w następnej linijce nadal jest ta sama liczba ?

0
int a,b,c = 0;
    a = ++c;
    b = c++;
    cout << a << " " << b << " " << c; 

Nie mogę zrozumiem czemu jak wypisuje zawartość b to wyświetla b = 1, a nie b = 2 Jakby było tak:

cout << c++ ; 

to wiem, że by wyświetliło starą wartość c.
Ale w moim programie czemu wyświetla starą wartość c, jak wypisuję ją już w nowej linijce ?

5

bo ++x oznacza:

  • zwiększ x i zwróć nową wartość.
    zaś x++ oznacza:
  • zapamiętaj wartość x
  • zwiększ x
  • zwróć zapamiętaną wartość.

Właśnie dla tego radzę zawsze używać ++x zamiast x++ wszędzie tam gdzie nie ma to znaczenia (osobno stojąca instrukcja).

1

o_O przeciez to nie linijka ma znaczenie o_O
x++; Oznacza zwróć starą wartość a potem inkrementuj zmienną. Więc jak przypisujesz gdzieś takie x++ to przypisujesz starą wartość.

0

może głupie pytanie ale w takim razie jak odczytać x++ z powiększoną liczbą o 1 ? bo w pętli for to wiadomo się zmienia, a tak to jak ?

0
nowicjusz35 napisał(a):

może głupie pytanie ale w takim razie jak odczytać x++ z powiększoną liczbą o 1 ? bo w pętli for to wiadomo się zmienia, a tak to jak ?

W pierwszej instrukcji inkrementacja a w drugiej możesz wypisać.

x++;
cout<<x;

Chyba, że nie zrozumiałem pytania.

0

to miałem podobnie w moim programie i nie zwiększa się wtedy wartość.
Czy jak jużten x++ przypisuje jakiejś innej zmiennej to wtedy nie pokaże większej wartości ?

tak nie pokaże:

 int y,x = 1;
y = x++;
cout << y;

a tak pokaże ?

 int x = 1;
x++;
cout << x;

bo właśnie tak mam jak skompiluje te programy, ale nie mogę tego zrozumieć czemu te dwa przypadki inaczej działają.

2

No tak na pewno nie miałeś.

int y,x = 1;
y = x++;    // przypisz do y obecną wartość x czyli 1, następnie zwiększ o 1 x (ale nie zwiększasz y)
cout << y;
int x = 1;
x++;  // zwiększ wartość x o 1 - zwiększasz z 1 na 2
cout <<x;  // wypisz wartość x - wypisujesz 2
0

dobra to już wiem dzięki.

0

Przecież ci już wytłumaczyłem, powiedz którego słowa nie rozumiesz.

int y,x = 1;
y = x++; // Zapamiętaj wartość x, czyli zapamiętujemy 1, zwiększ x, czyli x=2, zwróć zapamiętaną wartość, czyli 1, wpisz w y zwróconą wartość, czyli y=1
cout << y; // wyświetl wartość y, czyli 1


 int x = 1;
x++; // Zapamiętaj wartość x, czyli zapamiętujemy 1, zwiększ x, czyli x=2, zwróć zapamiętaną wartość, czyli 1, zapisz tą zwróconą wartość na ścianie (w sensie nigdzie nie zapisuj)
cout << x; // wyświetl wartość x, czyli 2
1
int x, y;
x = 0;
y = x++;   // y == 0, x == 1

x = 0;
y = ++x;   // y == 1, x == 1


y i x to osobne zmienne, więc ich wartości nie są powiązane ze sobą

1 użytkowników online, w tym zalogowanych: 0, gości: 1