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.