Non stai inizializzando mai n su un valore specifico. Il C++ non lo farà di default quando chiami int n
. Invece, si riserva solo un blocco di memoria di dimensioni intere. Quindi quando chiami n++
, il programma sta semplicemente afferrando qualunque valore si trovi in quella memoria e incrementandolo. Dato che lo stai facendo in rapida successione e non crei nuove variabili intermedie, capita di afferrare sempre la stessa memoria. Come sottolinea @NicolasBuquet, l'ottimizzazione del compilatore può anche essere responsabile della coerenza con la quale viene raccolto lo stesso blocco di memoria.
Se si dovesse assegnare un valore a n, (ad esempio int n = 1;
) questo comportamento andrebbe via perché un valore specifico verrà scritto nel blocco di memoria assegnato a n.
Non so come funziona esattamente C++, ma, con l'esperienza che ho avuto con C, forse si sta allocando nello stesso blocco di memoria? prova int n = 0. –