Вы никогда не инициализируете n определенным значением. C++ не будет делать это по умолчанию, когда вы вызываете int n
. Вместо этого он просто резервирует целочисленный блок памяти. Поэтому, когда вы вызываете n++
, программа просто захватывает любое значение, находящееся в этой памяти, и увеличивая его. Поскольку вы делаете это в быстрой последовательности и не создаете новые переменные между ними, это, как правило, захватывает одну и ту же память снова и снова. Как отмечает @NicolasBuquet, оптимизация компилятора также может отвечать за согласованность, с которой подобранный блок памяти выбран.
Если вы должны были присвоить значение n (то есть int n = 1;
), это поведение исчезнет, потому что определенное количество будет записано в кусок памяти, назначенный n.
Я не знаю, как работает C++, но, с опытом, который у меня был с C, возможно, он выделяется в одном блоке памяти? try int n = 0. –