Странные результаты с использованием расширенного назначения
Я пробую разные вещи с расширенным заданием на C. Однако я не могу понять, что здесь происходит и почему. Вот пример кода:
int a = 3;
int b = 0;
a *= a = a *= a; // a = 27, b = 0
a = 3;
b = 0;
a *= b = a *= a; // a = 27, b = 9
a = 3;
b = 0;
b *= b = a *= a; // a = 9, b = 0 ???
почему b
равно 0 в третьем случае?