Gibt es Sequenzpunkte im Ausdruck a ^ = b ^ = a ^ = b oder ist er undefiniert?

Die angeblich "clevere" (aber tatsächlich ineffiziente) Art, zwei ganzzahlige Variablen auszutauschen, anstatt einen temporären Speicher zu verwenden, beinhaltet oft die folgende Zeile:

int a = 10;
int b = 42;

a ^= b ^= a ^= b; /*Here*/

printf("a=%d, b=%d\n", a, b); 

Aber ich frage mich, wie zusammengesetzte Zuweisungsoperatoren^= sind keine Sequenzpunkte, oder? Bedeutet das, dass es sich tatsächlich um undefiniertes Verhalten handelt?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage