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 :

Souci de priorité d'opérateur, quelqu'un peut m'expliquer?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut Souci de priorité d'opérateur, quelqu'un peut m'expliquer?
    Bonjour, j'ai un souci dans une fonction dont voici un extrait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //pop the last element
    const unsigned int biggestItemIdofLine = rIter->first;
     
    std::cout << itemRatingsMatrix.ratings.size() << endl;  //affiche 0 (c'est un vector)
    std::cout << biggestItemIdofLine << endl;                  //affiche 1658
    La comparaison :
    biggestItemIdofLine > itemRatingsMatrix.ratings.size() - 1

    me retourne false....

    biggestItemIdofLine > itemRatingsMatrix.ratings.size()

    me retourne true

    Il me semble que c'est un problème de priorité d'opérateurs...
    Je n'explique pas pourquoi

    biggestItemIdofLine > itemRatingsMatrix.ratings.size() - 1

    s'exécute comme

    (biggestItemIdofLine > itemRatingsMatrix.ratings.size() ) - 1


    alors que je m'attendrai à
    biggestItemIdofLine > ( itemRatingsMatrix.ratings.size() - 1 )

    Pourtant si je vérifie sur le net
    http://www.intap.net/~drw/cpp/cpp03_05.htm

    Il me semble lire que la soustraction a une priorité plus forte que la comparaison?

    Je patauge un peu dans le doute là...

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Oups, en fait j'ai trouvé...

    C'est pas un souci d'opérateur mais un superbe exemple d'underflow qui fausse tout... Je m'en souviendrai

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Je suis de ceux qui abusent des parenthèses pour ne laisser aucune ambigüité sur la précédence des opérateurs. J'aurais certainement écrit même pour quelque chose d'aussi simple, comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(biggestItemIdofLine > ( itemRatingsMatrix.ratings.size() - 1 ))

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/12/2008, 19h33
  2. Quelqu'un peut m'expliquer ce programme?
    Par checksum18 dans le forum C
    Réponses: 4
    Dernier message: 16/05/2008, 10h08
  3. Réponses: 0
    Dernier message: 10/08/2007, 17h30
  4. [DOM] quelqu un peut m expliquer : getelementbyID
    Par hkahil dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 26/07/2007, 10h01
  5. quelqu'un peut m'expliquer ce "Type"
    Par bassim dans le forum Langage
    Réponses: 9
    Dernier message: 21/01/2007, 15h08

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