2014-09-09 4 views
-2

Какие начальные значения x сделают цикл бесконечным? Мне сказали, что ответ - 123, но я не понимаю, как это сделать. Может ли кто-нибудь объяснить это?Величина бесконечного цикла

do 
{ 
    x = x - 3; 
} while (x < 120); 
+3

123 не является ответом. – njzk2

+3

Отрицательное значение приведет к длительному циклу, но в конечном итоге отрицательное число будет «переполнено» до положительного числа, и цикл остановится. –

+0

Этот цикл является «бесконечным» или одноразовым, поскольку «x» уменьшается, а условие «while» использует LESS-THAN ('<'). – abiessu

ответ

1

Никакое значение не приведет к тому, что цикл будет бесконечным. В java интегральные примитивные значения переполняются до положительного числа, и, таким образом, этот цикл в конечном итоге закончится.

В качестве примера:

int x = Integer.MIN_VALUE; 

do { 
    x = x - 3; 
    System.out.println(x); 
} while (x < 120); 

будет выводить:

2147483645 
+0

спасибо, ребята, тогда это имеет смысл. – user3491684

1

Чтобы понять это дальше, 32-битное целое значение для десятичного 122

00000000000000000000000001111010 

Если вы декремент, что вы в конечном итоге доходите до нуля:

00000000000000000000000000000000 

И уменьшаем еще 1 раз и получают -1:

11111111111111111111111111111111 

Декремент снова и получить -2:

11111111111111111111111111111110 

Decrement целую кучу раз, и в конце концов добраться до максимальной отрицательной номер:

10000000000000000000000000000000 

Decrement еще раз, и вы получите максимальное положительное число:

01111111111111111111111111111111 
Смежные вопросы