Ответ на ваш вопрос
Нет.
Что будет
Это произойдет:
int x = 1; /* ASSUME THIS IS SO */
y = x = x + 1;
/* Results: */
y == 2;
x == 2;
Как это компилируется
Так же, как:
x += 1;
y = x;
Почему это не определено
Потому что вы не пишете x
в том же выражении, которое вы читаете. Вы просто устанавливаете его на + 1
, затем присваиваете y
значение x
.
Ваше будущее
Если вы считаете, что код запутан, вы можете использовать круглые скобки для удобства чтения:
y = x = (x + 1);