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