Как сообщение увеличивает (я ++) и пред инкремент (++ i), операторы работают в Java?

Можно ли объяснить мне вывод этого кода 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 в обоих случаях

88
задан Pokechu22 7 November 2014 в 19:56
поделиться

5 ответов

Это поможет?

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++ также увеличивает значение (в фоновом режиме), но возвращает неизменное значение переменной - то, что выглядит как выполненное позже.

136
ответ дан 24 November 2019 в 07:22
поделиться

когда a равно 5, тогда a ++ дает 5 выражению и затем увеличивает a , а ++ a увеличивает a перед передачей числа в выражение (которое в данном случае дает a 6 выражению).

Итак, вы вычислили

i = 6 + 7 + 7
i = 5 + 7 + 8
2
ответ дан 24 November 2019 в 07:22
поделиться

++ 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 объясняет ваш конкретный фрагмент.

185
ответ дан 24 November 2019 в 07:22
поделиться

++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. Если посмотреть на эти термины таким образом, то можно легко увидеть, что они оба одинаковы, так как являются коммутативными.

9
ответ дан 24 November 2019 в 07:22
поделиться
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.

19
ответ дан 24 November 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: