Jestem nowicjuszem w Javie i mam tło C. Przechodzę przez książkę Khalida Moughala. Na stronie 126 daje przykład jakKoncepcja punktu sekwencyjnego w java
int i = 10;
int k = ++i + --i; // ((++i) + (--i)).
To wyraźnie narusza koncepcję sekwencji jako punkt C, który mówi, że nie można zmienić wartość zmiennej więcej niż raz w tym samym punkcie sekwencji. Moje pytanie brzmi, czy ta sama reguła punktu kolejności dotyczy java czy nie? Możliwe, że wziął ten przykład tylko po to, aby wyjaśnić pojęcie przedrostka unarnego operatora i jego działania ubocznego, ale taki przykład, który wyraźnie narusza bardzo podstawową regułę języka, nie jest oczekiwany w książce tak znanej jak Khalid Moughal.
Więc proszę potwierdzić to.
Mam nadzieję, że ludzie weźmiecie to we właściwym duchu.
Dzięki,
Mawia
C ma dużo bagażu z faktu, że istniały dziesiątki kompilatorów i milionów istniejących programów, zanim standard został napisany, więc musieli wykonać standard w taki sposób, aby nie przerwać programów zależnych od sposób, w jaki dany kompilator optymalizuje rzeczy. Również optymalizacja była dość prymitywna, co tłumaczy słowo kluczowe "register", które pozwala programistom wykonywać mikrooptymalizacje, które każdy przyzwoity kompilator może zrobić lepiej. –