Когда я начинаю мой кодПочему для бесконечного цикла?
for (byte i = 0; i < 1000; i++) {
System.out.print(i);
}
я получаю бесконечный цикл. Зачем?
Когда я начинаю мой кодПочему для бесконечного цикла?
for (byte i = 0; i < 1000; i++) {
System.out.print(i);
}
я получаю бесконечный цикл. Зачем?
Просто потому, что значение байта начинает переполняться после его максимального значения т.е. 127
.
Значение i
будет идти до 127
, а затем переливается в -128
, а затем увеличиваем обратно до 127. Этот процесс будет поэтому никогда не удовлетворит ваше для условия завершения цикла, и, таким образом, цикл навсегда.
после 127 он будет обернут до -128 и снова отсчитайте до 127. Все возможные значения меньше 1000, поэтому он никогда не выйдет – xkickflip
Максимальное значение байта меньше, чем 1000.
Я знаю, размер 'byte' равен [-128 до 127]. Но это не объясняет бесконечный цикл. – JohnWinter
Как цикл должен заканчиваться, если невозможно, чтобы i> = 1000 было истинным? –
есть, правый. Я вижу сейчас. – JohnWinter
Duplicate question http://stackoverflow.com/a/3975838/1638718 – ozgur