Почему число вдруг обнуляется в цикле при увеличении?
Сделал цикл, в котором просто число возводится в степень.
int n = 10;
int a = 2;
while (n > 0)
{
a *= a;
Console.WriteLine(a);
n--;
}
Цикл проходит 4 итерации, а после умножения 65536 на 65536, переменная обнуляется. Проверял c long. Там цикл проходил ещё одну итерации, а потом снова шли нули. Однако делал эксперимент
long a = long.MaxValue;
Console.WriteLine(a * a * a * a * a * a);
и в нём происходит ожидаемое переполнение типа без обнуления. Почему в цикле переменная обнуляется?