IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Comment détecter un débordement sur les multiplications d'entiers en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut Comment détecter un débordement sur les multiplications d'entiers en C
    Bonjour à tous!

    J'aurais besoin de faire une validation dans un programme mais je n'arrive pas a voir comment la faire.
    Je doit pouvoir vérifier s'il ya eu débordement à la suite d'une multiplication sur des entiers non signés en C.

    Dison que j'ai des variables du genre:

    unsigned int a = ...; //où ... veut dire peu importe l'entier valide
    unsigned int b = ...;

    unsigned int c = a * b;

    Je doit donc faire une validation sur c pour voir s'il y a eu débordement/overflow sans include de truc du genre <limits.h> mais je ne vois pas comment faire.

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Une tactique: Tu vérifies si c/b est bien égal à a...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 20
    Par défaut
    oui lol j'y ai pensé juste apres. Merci parcontre!

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fred_ET Voir le message
    Je doit pouvoir vérifier s'il ya eu débordement à la suite d'une multiplication sur des entiers non signés en C.
    On peut pas. Il faut anticiper et il faut utiliser les constantes de <limits.h>.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 28/03/2006, 15h10
  2. Réponses: 2
    Dernier message: 20/03/2006, 18h05
  3. [Image]comment bloquer le cache sur les images?
    Par keiser1080 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 10/03/2006, 18h17
  4. comment ecrire en arabe sur les basse de données
    Par infocher dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/01/2006, 16h03
  5. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo