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?