Увеличивайте до бесконечности, и вы получите -2147483648?

По умной и сложной причине, которую я действительно не хочу объяснять (потому что она включает создание таймера чрезвычайно уродливым и хакерским способом), я написал код на C # вроде этого:

int i = 0;
while (i >= 0) i++; //Should increment forever
Console.Write(i);

Я ожидал, что программа зависнет вечно или выйдет из строя или что-то в этом роде, но, к моему удивлению, после ожидания примерно 20 секунд я получил следующее сообщение:

-2147483648

Ну, программирование научило меня многому, но я все еще не могу понять, почему постоянное увеличение числа приводит к тому, что оно в конечном итоге становится отрицательным ... что здесь происходит?

5
задан Solomon Ucko 19 March 2019 в 22:05
поделиться