Sequenzpunkte und Nebenwirkungen in C

In diesemC-FAQ es geht darumSequenzpunkt;

Der Standard besagt, dass;
Zwischen dem vorherigen und dem nächsten Sequenzpunkt muss der gespeicherte Wert eines Objekts durch die Auswertung eines Ausdrucks höchstens einmal geändert werden. Darüber hinaus wird auf den vorherigen Wert nur zugegriffen, um den zu speichernden Wert zu bestimmen.

In den Beispielen

i = i++;
a[i] = i++;

Aus dem ersten Satz der Aussage geht klar hervor, dass diese Beispiele zu Ergebnissen führenundefiniertes Verhalten.
In der Erklärung des zweiten Satzes der Aussage heißt es:

Der zweite Satz sagt:Wenn ein Objekt innerhalb eines vollständigen Ausdrucks beschrieben wird, müssen alle Zugriffe auf das Objekt innerhalb desselben Ausdrucks direkt in die Berechnung des zu schreibenden Werts einbezogen werden. Diese Regel schränkt die rechtlichen Ausdrücke wirksam auf diejenigen ein, bei denen die Zugriffe nachweislich vor der Änderung liegen. Zum Beispiel der alte Standby

 i = i + 1 

ist erlaubt, weil der Zugriff von i verwendet wird, um den endgültigen Wert von i zu bestimmen. Das Beispiel

a[i] = i++

ist nicht erlaubt, weil einer der Zugriffe von i (der in a [i]) nichts mit dem Wert zu tun hat, der in i gespeichert wird (was in i ++ geschieht), und es gibt daher keine gute Möglichkeit, ihn zu definieren.

Meine Fragen sind:
1.Was bedeutet es,Wenn ein Objekt innerhalb eines vollständigen Ausdrucks beschrieben wird, müssen alle Zugriffe auf das Objekt innerhalb desselben Ausdrucks direkt in die Berechnung des zu schreibenden Werts einbezogen werden.?

2.Was bedeutet es, Das Beispiela[i] = i++ ist nicht erlaubt, weil einer der Zugriffe von i (der in a [i]) nichts mit dem Wert zu tun hat, der in i gespeichert wird (was in i ++ vorkommt)
Könnte es jemand auf einfache Weise erklären?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage