Вы не упоминаете язык, но ваша переменная zz
не имеет бесконечного диапазона (нет переменной любого типа).Поэтому, как только он посчитает свое самое высокое представимое значение, он (возможно, в зависимости от языка и от того, вызовет ли он какое-то исключение для переполнений) «обернется» до самого низкого значения, которое будет очень отрицательным числом, поскольку ваша переменнаяподписаноЗатем он будет продолжать считать до тех пор, пока не достигнет 0
снова, когда он будет печатать.В вашем коде это будет продолжаться вечно.Конечно, вы заметили, что он печатает нули намного медленнее, чем версия «без оператора if» печатает свои номера?Это потому, что zz
содержит значение 0
очень редко;например, один раз каждые 4 миллиарда итераций.