Оценка слева направо.Таким образом,
int y = x + (x = 10);
(с x
изначально 1
):
int y = 1 + 10;
Если присвоить присвоение в ()
, оно не будет первым.Это просто гарантирует, что это правильное выражение, поскольку y = x + x = 10
будет y = (x + x) = 10
, что потребует присвоения чему-то (x + x
), который не является переменной.
Если вы хотите 20, поместите присвоениепервое:
int y = (x = 10) + x;
Конечно, в подавляющем большинстве случаев 1020 * лучше избегать подобных побочных эффектов и присваивать x
значение за пределами выражения, при необходимости разбивая выражение.Иногда присваивание внутри выражения может быть полезно (особенно while ((blah = getNextBlah()) != null)
), но только в ограниченных ситуациях.