В коде присутствует ошибка: в циклах for не задано начальное значение переменной i, что может привести к неопределенному поведению. Второй цикл может использовать последнее значение i из предыдущего цикла, даже если в первом цикле i была равна 0.
Обычно локальные переменные выделяются в стеке памяти. Если между двумя циклами for есть еще одна переменная, она может выделиться в том же месте, где была выделена i. Поэтому новая переменная i может попасть в другую часть стека, где, в лучшем случае, будет равна 0.
Поведение программы зависит от конкретной аппаратно-программной платформы и компилятора, и может быть непредсказуемым. Может возникнуть мусорная память от предыдущей программы.
Простое решение - указать начальное значение i в каждом цикле for, чтобы все работало правильно и перестановка определения переменной count не вызывала непредсказуемые эффекты.