Почему при таком построение цикла 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
В общем, постфиксный инкремент в операторе присваивания над той же переменной ничего полезного не делает. Отсюда и Ваш бесконечный цикл.
Комментариев нет:
Отправить комментарий