Czy w wyrażeniu a ^ = b ^ = a ^ = b są punkty sekwencji, czy jest to niezdefiniowane?
Rzekomo „sprytny” (ale w rzeczywistości nieefektywny) sposób zamiany dwóch zmiennych całkowitych zamiast tymczasowego przechowywania często obejmuje tę linię:
int a = 10;
int b = 42;
a ^= b ^= a ^= b; /*Here*/
printf("a=%d, b=%d\n", a, b);
Ale zastanawiam się, czy operatorzy przypisania złożonego lubią^=
nie są punktami sekwencji, prawda? Czy to oznacza, że faktycznie jest to niezdefiniowane zachowanie?