x wynosi 13
y wynosi 12y
Najpierw wyjaśnię co robią użyte operatory:
y %= x tutaj wartość zmiennej y jest zmieniana na resztę z dzielenia y przez x, więc y = 0
x *= x-- tutaj wartość zmiennej x jest zmieniana na iloraz x oraz wartości po prawej stronie *=, czyli x--. Różnica między x-- i x++, a --x i ++x jest taka, że te pierwsze zwracają stare x, a te drugie zwracają zmienioną wartość, ++ dodaje do zmniennej 1, a -- odejmuje, więc w tym przypadku najpierw x jest zmiejszane o 1 (bo x--), a następnie pomnożone przez stare x, więc wynosi 12.
y += ++x - y-- tutaj wartość zmiennej y jest zmieniana na sumę y i wyrażenia po prawej stronie. Pamiętając o zasadzie omówionem w poprzedniej linijce: można powiedzień, że najpierw x jest zwiększane o 1, y jest zmniejszane o 1, a następnie dodawana jest to niego wartość x - stare y, więc x wynosi 13, a y wynosi 12.
Przy czym warto zaznaczyć, że inkrementacja i dekrementacji z ++ z przodu (++x) jest minimalnie szybsza od inkrementacji i dekrementacji z ++ z tyłu (x++), ponieważ w drugim przypadek program musi dodatkowo zdefiniować zmienną, która zostanie zwrócona, a w pierwszym zwraca bezpośrednio x. Nie stanowi dużej różnicy w prostych programach, ale w dużych pętlach lepiej stosować ++x, niż x++.