Каким будет результат компиляции и выполнения данного кода?

public class A {
    public static void main(String[] args) {
        for (int i = 0; ++i > 0;) {
            System.out.println(i);
        }
    }
}
Explanation

Значение типа int занимает 32 бита (4 байта). Всего возможно 232 различных значений, из них половина положительных и половина отрицательных, причём отрицательными считаются числа, у которых старший бит равен единице:

00000000 00000000 00000000 000000002 = 010
00000000 00000000 00000000 000000012 = 110
. . .
01111111 11111111 11111111 111111112 = 214748364710 = 231–1
10000000 00000000 00000000 000000002 = –214748364810 = –231
. . .
11111111 11111111 11111111 111111112 = –110

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


Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты