Какие начальные значения x сделают цикл бесконечным? Мне сказали, что ответ - 123, но я не понимаю, как это сделать. Может ли кто-нибудь объяснить это?Величина бесконечного цикла
do
{
x = x - 3;
} while (x < 120);
Какие начальные значения x сделают цикл бесконечным? Мне сказали, что ответ - 123, но я не понимаю, как это сделать. Может ли кто-нибудь объяснить это?Величина бесконечного цикла
do
{
x = x - 3;
} while (x < 120);
Никакое значение не приведет к тому, что цикл будет бесконечным. В java интегральные примитивные значения переполняются до положительного числа, и, таким образом, этот цикл в конечном итоге закончится.
В качестве примера:
int x = Integer.MIN_VALUE;
do {
x = x - 3;
System.out.println(x);
} while (x < 120);
будет выводить:
2147483645
спасибо, ребята, тогда это имеет смысл. – user3491684
Чтобы понять это дальше, 32-битное целое значение для десятичного 122
00000000000000000000000001111010
Если вы декремент, что вы в конечном итоге доходите до нуля:
00000000000000000000000000000000
И уменьшаем еще 1 раз и получают -1:
11111111111111111111111111111111
Декремент снова и получить -2:
11111111111111111111111111111110
Decrement целую кучу раз, и в конце концов добраться до максимальной отрицательной номер:
10000000000000000000000000000000
Decrement еще раз, и вы получите максимальное положительное число:
01111111111111111111111111111111
123 не является ответом. – njzk2
Отрицательное значение приведет к длительному циклу, но в конечном итоге отрицательное число будет «переполнено» до положительного числа, и цикл остановится. –
Этот цикл является «бесконечным» или одноразовым, поскольку «x» уменьшается, а условие «while» использует LESS-THAN ('<'). – abiessu