L oop работает еще раз, чем я ожидал - PullRequest
0 голосов
/ 15 апреля 2020
class BlankIt{  
    public static void main(String[] args) {
        int i = 10, j = 20;
        while(i++ < --j){
            System.out.println("\n " + i + " " + j);
        }
        System.out.println("\n " + i + " " + j);
    }   
}

Предыдущий вывод - 16 14. Почему это происходит? L oop останавливается, когда условие достигает 15 < 15. Пожалуйста, помогите мне !!

1 Ответ

2 голосов
/ 16 апреля 2020

Приращение i, являющееся постинкрементом, произойдет после оценки сравнения, j, с другой стороны, будучи предварительным уменьшением, произойдет до оценки сравнения:

10 < 19 (true)
11 < 18 ...
12 < 17 ...
13 < 16 ...
14 < 15 ...
15 < 14 (false) 

После оценки последнего сравнения i будет увеличен еще раз и будет иметь значение 16, j, поскольку оно уже уменьшилось, останется 14.

...