Mam coś takiego:
int y = 10, x = 15;
y = x++;
printf("y = %d x = %d", y, x);
Output: y = 15, x = 16
Tutaj mi się wszystko zgadza: do y
zostanie przypisany x++
czyli tak naprawdę zostanie przypisany x
, który później się zwiększa o 1.
Ale jak mam coś takiego:
int x = 15;
x = x++;
printf("x = %d", x);
Output: x = 15
Dlaczego tak się dzieje? Z mojej perspektywy powinno to zadziałać tak: do x
zostanie przypisany x++
(czyli się nie zmieni), ale później (tak jak analogicznie przykład wyżej) to x
powinno mimo wszystko zostać zwiększone o 1. Czyli spodziewałbym się outputu x = 16.