Предполагая, что вы имели в виду
int a=5; int i;
i=++a + ++a + a++;
System.out.println(i);
a=5;
i=a++ + ++a + ++a;
System.out.println(i);
a=5;
a=++a + ++a + a++;
System.out.println(a);
Это вычисляется:
i = (6, a is now 6) + (7, a is now 7) + (7, a is now 8)
так я это 6 + 7 + 7 = 20 и так 20 печатается.
i = (5, a is now 6) + (7, a is now 8) + (8, a is now 9)
поэтому i 5 + 7 + 8 = 20 и поэтому 20 снова напечатано.
a = (6, a is now 6) + (7, a is now 7) + (7, a is now 8)
и после того, как все с правой стороны оценивается (в том числе установив до 8), то устанавливается на 6 + 7 + 7 = 20, и таким образом 20 распечатывается в последний раз.
7 + 7 + 6 = 20. _____ – kennytm
Всегда избегайте двусмысленных утверждений :) –
@Prasoon Saurav В отличие от C и C++, Java и C# имеют строго определенный порядок оценки, поэтому эти утверждения не являются двусмысленными. –