Overflow addition en c
Fermé
phil
-
16 juil. 2006 à 21:10
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 juil. 2006 à 08:36
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 juil. 2006 à 08:36
A voir également:
- Overflow addition en c
- Formule excel addition - Guide
- Addition et soustraction dans la même formule excel - Forum Excel
- Bash addition ✓ - Forum Shell
- Addition pourcentage excel ✓ - Forum Bureautique
- Status stack overflow error ✓ - Forum Programmation
2 réponses
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
17 juil. 2006 à 03:57
17 juil. 2006 à 03:57
les createur du langage c on t'ils propsé une solution a ce probleme.
Non je ne crois pas. C'est plutôt aux programmeurs de prévoir leur type de leurs variables si elles risquent d'être dépassées dans leur capacité.
Non je ne crois pas. C'est plutôt aux programmeurs de prévoir leur type de leurs variables si elles risquent d'être dépassées dans leur capacité.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
17 juil. 2006 à 08:36
17 juil. 2006 à 08:36
Salut.
Je ne suis pas expert la dedans, mais si tu fait MAX+1(32XXX+1) tu as soit MIN (-32XXX), soit inf.
Si tu as "inf", c'est simple.
Sinon, tu peux définir une structure se subtituant aux entier, de façon à détecter les dépassements.
struct int2{...}
int2 operator+(int2 a,int2 b)
{
if (a>0&b>0) if (a+b<a|a+b<b) /* traite l'erreur*/ else return a+b;
if (a<0&b<0) if (a+b>a|a+b>b) /* traite l'erreur*/ else return a+b;
...
}
Je ne suis pas expert la dedans, mais si tu fait MAX+1(32XXX+1) tu as soit MIN (-32XXX), soit inf.
Si tu as "inf", c'est simple.
Sinon, tu peux définir une structure se subtituant aux entier, de façon à détecter les dépassements.
struct int2{...}
int2 operator+(int2 a,int2 b)
{
if (a>0&b>0) if (a+b<a|a+b<b) /* traite l'erreur*/ else return a+b;
if (a<0&b<0) if (a+b>a|a+b>b) /* traite l'erreur*/ else return a+b;
...
}