Bonjour,
voilà, je met au point une fonction pour saisir un entier signé sur 16 bits.
C'est juste une fonction pour controler la saisie au clavier. J'aimerais que le nombre entier ne dépasse pas sa taille. Donc je valide l'entrée seulement si le nombre qui risque d'etre entré ne dépasse pas 32767.
Pour valider le nombre je fait un test:
Tout ceci juste pour ne pas dépasser les fameux 32767. Ma question est tout simplement, que se passe-t-il dans le test lorsque j'écris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if((nombre*10+(int)saisie-0X30)<=32767) //le test de validation,-0X30 pour passer de l'ascii à une valeur numérique { printf("%c",saisie); //si ça passe, j'écris a l'écran if(nombre>0) // nombre*=10; //si on est a 6 et qu'on écris, alors ça devient 60... nombre+=((int)saisie-0X30); // et j'y ajoute la valeur entré au clavier }
"nombre*10+(int)saisie-0X30"?
La valeur créé peut-être supérieur à 32768, comment le processeur gère ça? Il n'a pas de limite? Ou le fait-il dans une sorte de variable temporaire égale à un int? Si c'est ce dernier cas, tout ça ne sert peut-être a rien car même dans le test je dépasserais la taille non?
Bref si quelqu'un a une réponse à ça, merci d'avance.
Partager