Существуют ли точки последовательности в выражении a ^ = b ^ = a ^ = b или оно не определено?
Якобы "умная" (но на самом деле неэффективный) способ замены двух целочисленных переменных вместо временного хранения часто включает в себя следующую строку:
int a = 10;
int b = 42;
a ^= b ^= a ^= b; /*Here*/
printf("a=%d, b=%d\n", a, b);
Но я'Интересно, составные операторы присваивания, такие как^=
не точки последовательности, не так ли? Означает ли это, что этона самом деле неопределенное поведение?