Overflow addition en c

comment récuperer les cas d'overflow en c pour l'addition ou la multiplication sur les char, short, int?

peut on recuperer cette erreur? comme les erreurs systemes?

la solution consistant pour l'addition de deux short par exemple, a les surdimensionner en long et de verifier le resultat ne m'interesse pas!!!!

les createur du langage c on t'ils propsé une solution a ce probleme.
merci

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    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é.
    1. Contributeur
      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;
      ...
      }