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
?