Salut,
20ans que j'ai pas posté sur ce forum mais je peux t'éclaircir.
Tu utilises des variables de type integer, soit de -2147483647 à 2147483647 donc si tu mets une valeur qui dépasse ce nombre tu vas faire un overflow ( ca provoquera un changement de signe parce que ça va faire le bordel dans les bits qui représentent le nombre (pour simplifier haha) )
Tu as plusieurs solutions, soit tu utilises un long int, ou unsigned long int (ca te permettra d'avoir une marge supplémentaire en plus, mais attention l'unsigned ne prend que les nombres positifs, son bit qui n'est plus utilisé pour stocker le signe permet de stocker des nombres plus grand)
Soit tu passes par une chaine, en stockant chaque nombre dans une partie de ta chaine par exemple :
char str toto = ["1234"];
char str tata = ["1232"];
Dans ce cas la toto[0] == 1, toto[1] == 2, etc..
Par contre tu ne peux pas faire de calcul sur ta chaine, il faut la poser comme au primaire en passant par chaque case de ta chaine.