petitpetro : on peut très bien mettre des chiffres dans un char.
le problème ici n´est pas que 127 soit trop grand, mais qu´un char est par défaut un signed char ( même si le compilateur considère que signed char et char sont deux type différend).
toujours est-il que lorsque ton char vaut 127 il n´y a pas de problème mais au coup d´après il vaut 128, et là ça rate, car il ne vaut pas 128, mais -128 et donc il est bien plus petit que 127 ce qui fait que le programme continu de tourner.
quand il passe par c=8 c´est normal qu´il fasse bip, et pour le reste, quand un programme rate dans ce genre, on sait jamais ce qu´il fait.