Вопрос-ответ

How do the post increment (i++) and pre increment (++i) operators work in Java?

Как операторы post increment (i ++) и pre increment (++ 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

Переведено автоматически
Ответ 1

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

Ответ 2

Помогает ли это?

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

Ответ 3

В обоих случаях сначала вычисляется значение, но в post-increment оно сохраняет старое значение и после вычисления возвращает его

++a


  1. a = a + 1;

  2. возвращает;

a++


  1. temp = a;

  2. a = a + 1;

  3. возвращает temp;

Ответ 4
i = ++a + ++a + a++;

это

i = 6 + 7 + 7

Работаем: увеличиваем a до 6 (текущее значение 6) + увеличиваем a до 7 (текущее значение 7). Сумма равна 13, теперь добавьте ее к текущему значению a (= 7), а затем увеличьте a до 8. Сумма равна 20, а значение a после завершения присваивания равно 8.

i = a++ + ++a + ++a;

это

i = 5 + 7 + 8

Работает: начальное значение a равно 5. Используйте его при сложении, а затем увеличьте до 6 (текущее значение 6). Увеличьте a с текущего значения 6 до 7, чтобы получить другой операнд + . Сумма равна 12, а текущее значение a равно 7. Затем увеличьте a с 7 до 8 (текущее значение = 8) и добавьте его к предыдущей сумме 12, чтобы получить 20.

java