Ce n'est pas un bug à proprement parler, mais un comportement normal qui peut être source de bug 
Tu utilises un entier, qui a pour valeur maximum 2^(32-1), soit 2^31 sur ta machine.
Pourquoi ? Car un entier est représenté par 4 octets sur ta machine, soit 4 x 8 bits, donc 32 bits.
Pourquoi 31 alors ? Car tu utilises un entier dit "signé", donc qui peut avoir des valeurs négatives ou positives. En ce cas, le premier bit est utilisé pour indiquer le signe. Vu que l'on a un bit réservé pour le signe, le maximum est donc de 31.
En dépassant cette valeur maximum, tu causes un dépassement, et tombe dans une situation imprévisible. Je ne sais pas si ce genre de souci peut t'être signalé via un quelconque flag de warning.
Tu peux augmenter cette valeur max en utilisant un unsigned int, tu te permets donc d'utiliser pour de la valeur le bit de signe, donc tu pourras aller jusqu'à 2^32.
Sinon, pour dépasser ces limites, tu peux utiliser un long.
Nota : les valeurs que je décris dépendent de la machine derrière. Un int en C++ n'est pas obligatoirement représenté par 4 octets. Il peut l'être par 2. Il faut donc, en tout temps, faire attention à ces informations 
Message édité le 22 février 2017 à 12:08:51 par Bunyan