Можно ли объяснить мне вывод этого кода Java?
int a=5,i;
i=++a + ++a + a++;
i=a++ + ++a + ++a;
a=++a + ++a + a++;
System.out.println(a);
System.out.println(i);
Вывод равняется 20 в обоих случаях
Это поможет?
a = 5;
i=++a + ++a + a++; =>
i=6 + 7 + 7; (a=8)
a = 5;
i=a++ + ++a + ++a; =>
i=5 + 7 + 8; (a=8)
Главное, что ++a
увеличивает значение и тут же возвращает его.
a++
также увеличивает значение (в фоновом режиме), но возвращает неизменное значение переменной - то, что выглядит как выполненное позже.
когда a
равно 5, тогда a ++
дает 5 выражению и затем увеличивает a
, а ++ a
увеличивает a
перед передачей числа в выражение (которое в данном случае дает a
6 выражению).
Итак, вы вычислили
i = 6 + 7 + 7
i = 5 + 7 + 8
++ a
приращения, а затем использует переменную.
a ++
использует, а затем увеличивает значение переменной.
Если у вас есть
a = 1;
и вы делаете
System.out.println(a++); //You will see 1
//Now a is 2
System.out.println(++a); //You will see 3
, codaddict объясняет ваш конкретный фрагмент.
++a
увеличивает a
до его оценки.
a++
оценивает a
, а затем увеличивает его.
Связано с приведенным вами выражением:
i = ((++a) + (++a) + (a++)) == ((6) + (7) + (7)); // a is 8 at the end
i = ((a++) + (++a) + (++a)) == ((5) + (7) + (8)); // a is 8 at the end
Скобки, которые я использовал выше, неявно используются Java. Если посмотреть на эти термины таким образом, то можно легко увидеть, что они оба одинаковы, так как являются коммутативными.
i = ++a + ++a + a++;
is
i = 6 + 7 + 7
Working: увеличить a до 6 (текущее значение 6) + увеличить a до 7 (текущее значение 7). Сумма равна 13, теперь добавьте ее к текущему значению a (=7), а затем увеличьте a до 8. Сумма равна 20, а значение a после завершения задания равно 8.
i = a++ + ++a + ++a;
is
i = 5 + 7 + 8
Working: В начале значение a равно 5. Используйте его при сложении, а затем увеличьте его до 6 (текущее значение 6). Увеличьте a от текущего значения 6 до 7, чтобы получить другой операнд +. Сумма равна 12, а текущее значение a равно 7. Далее увеличьте a от 7 до 8 (текущее значение = 8) и прибавьте его к предыдущей сумме 12, чтобы получить 20.