Cześć,
w książce "Język ANSI C" Kernighana i Ritchiego autorzy przestrzegają przed używaniem następującej konstrukcji:
a[i]=i++
tłumacząc to tym, iż nie jest określona kolejność aktualizacji zmiennych w powyższym wyrażeniu (zatem nie wiadomo, czy indeks i będzie starą, czy nową wartością i).
Jednocześnie, o ile rozumiem używanie następującej instrukcji:
a[i]=j++<code>
zawsze spowoduje, iż do a[i] przypisana zostanie stara wartość j.
Czy ostrzeżenie autorów należy rozumieć w ten sposób, że jeżeli w danej instrukcji występuje operator inkrementacji (ogólniej - jakikolwiek operator powodujący efekt uboczny) działający na zmiennej i, to ta właśnie zmienna i nie powinna występować w tejże instrukcji po raz drugi, ze względu na to, że kolejność aktualizacji zmiennych nie jest określona?
Pozdrawiam.