Рассмотримприоритет java-оператора y = x + (x = 10);
int x=1;
int y1 = (x=10) + x;
System.out.println(y1);
// prints 20
x = 1;
int y2 = x + (x=10);
System.out.println(y2);
// prints 11
В первом примере,() выполняется первым, поскольку он имеет наивысший приоритет; устанавливает значение x
значение 10 и, следовательно, правый операнд (x) получает новое значение 10, и поэтому
Во втором примере левый операнд «x» получает свое значение 1, тогда выполняется() и x получает новое значение 10, поэтому y2 = 1+10 = 11;
Почему во втором примере() не выполняется первым; поэтому (x = 10) выполняется сначала, а левый операнд x должен быть установлен на его новое значение 10 и, следовательно, y2 = 20; но так не получилось?
Не путайте приоритет с порядком оценки операндов. –