Рассмотрим следующий код:Почему этот код переходит в бесконечный цикл?
public class Game {
public static void main(String[] args) {
int x = 0;
while (x < 1) {
x = x++;
}
}
}
С моим компилятором этот код входит в бесконечный цикл, но почему?
Во-первых, мы помещаем значение x
в x
и только тогда мы добавляем 1 к x
, и после этого я бы ожидать, что 1 < 1
будет ложным, и цикл в то время как было бы прекратить ...
Но нет, этого не происходит.
Так что же может быть причиной бесконечного цикла?
Звучит как отличный вопрос для отладчика. Пройдите через него. Или поставьте там некоторые записи журнала. – nhgrif
'x = x ++;' оставляет 'x' неизменным - вы увеличиваете его, а THEN заменяете его значением OLD (значение перед тем, как вы увеличиваете). –
-1 для того, чтобы не проверять «Связанный» (второй вопрос содержит ответ) – sashkello