Числовые переменные (например, ваше «i», которое является «int») могут содержать только ограниченный диапазон чисел.В целях демонстрации, скажем, есть только четыре различных числа, которые может содержать int (очевидно, что реальное int может содержать намного больше).Эти числа могут быть -2, -1, 0 и 1.
Если у меня есть int, значение которого равно 0, и я добавляю к нему 1, я получаю int, значение которого равно 1. Но если язатем добавьте еще 1, я не получаю int со значением 2. Помните, что int не может иметь значение 2. Он может иметь только значения -2, -1, 0 или 1.
Таким образом, вместо 1 + 1 будет «обтекание»: при переходе «мимо» максимально возможного значения оно возвращается к минимально возможному значению.Так что 1 + 1 = -2.
Это «переполнение».То, что происходит с вами, это то же самое, но с умножением, а не сложением, и, конечно, «int» имеет много, гораздо больше возможных значений, чем просто четыре.