Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

Бесконечный цикл for в java

Почему при таком построение цикла for, получается бесконечные вывод нулей?
int i; for (i = 0; i < 10; i = i++) { System.out.println(i); }


Ответ

Ваше выражение: i = i++. Что здесь происходит по шагам:
Сначала i = 0 Вычисляется значение после знака равно. Это ноль: result = i = 0 Вычисляется постфиксный инкремент. Теперь i = i+1 = 1 Результат выражения записывается в i. В итоге: i = result = 0

Можно заменить на: i = ++i. Тогда:
Сначала i = 0 Вычисляется префиксный инкремент. Теперь i = i+1 = 1 Вычисляется значение после знака равно: result = i = 1 Результат выражения записывается в i. В итоге: i = result = 1

В общем, постфиксный инкремент в операторе присваивания над той же переменной ничего полезного не делает. Отсюда и Ваш бесконечный цикл.

Комментариев нет:

Отправить комментарий