Doppelte Zuweisung derselben Variablen in einem Ausdruck in C ++ 11

Der C ++ 11 Standard (5.17, expr.ass) besagt, dass

In allen Fällen wird die Zuweisung nach der Wertberechnung des rechten und linken Operanden und vor der Wertberechnung des Zuweisungsausdrucks sequenziert. In Bezug auf einen unbestimmt sequenzierten Funktionsaufruf ist die Operation einer zusammengesetzten Zuweisung eine einzelne Auswertung

Soweit ich weiß, werden alle Ausdrücke, die Teil der angegebenen Aufgabe sind, vor der Aufgabe selbst ausgewertet. Diese Regel sollte auch dann funktionieren, wenn ich dieselbe Variable zweimal in derselben Zuweisung ändere. Ich bin mir ziemlich sicher, dass dies zuvor ein undefiniertes Verhalten war.

Wird der angegebene Code:

int a = 0;
a = (a+=1) = 10;

if ( a == 10 ) {
    printf("this is defined");
} else {
    printf("undefined"); 
}

immer auswerten zua==10?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage