Существуют ли точки последовательности в выражении a ^ = b ^ = a ^ = b или оно не определено?

Якобы "умная" (но на самом деле неэффективный) способ замены двух целочисленных переменных вместо временного хранения часто включает в себя следующую строку:

int a = 10;
int b = 42;

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

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

Но я'Интересно, составные операторы присваивания, такие как^= не точки последовательности, не так ли? Означает ли это, что этона самом деле неопределенное поведение?

Ответы на вопрос(4)

Ваш ответ на вопрос