Что будет напечатано в результате выполнения?

public class Test {
    public static void main(String[] s) {
        for (int i = 2; i < 10; i = (i++) + i--, i++) {
            System.out.print(--i);
        }
    }
}
Explanation
В этом примере переменная цикла i изменяется в трёх выражениях:
1. «System.out.println(--i)» – переменная i уменьшается на единицу. Поскольку используется префиксная форма оператора --, то на экран выводится новое (уменьшенное) значение.
2. «i = (i++) + i--» – переменная i увеличивается на единицу, затем уменьшается на единицу, затем вычисляется сумма, значение которой присваивается всё той же i.
Поскольку используется постфиксная форма операторов ++/--, то при вычислении суммы используются значения, которые были у i до увеличения / уменьшения. Получается, что это действие эквивалентно следующему: «i = i + (i + 1)»
3. «i++» – переменная i увеличивается на единицу.

Значения переменной i на каждой итерации цикла:
2 → 1 → 3 → 4
4 → 3 → 7 → 8
8 → 7 → 15 → 16

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты