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 :

Ordre de préséance des opérateurs ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par doccpu Voir le message
    merde j'ai fais un troll !

    non, non, c'est pas "ça peux", mais "ça doit" faire 5*5 = 25

    pour la petite phrase que Mongaulois à relevé dans son dernier post était erronée et due a une erreur de raisonnement de ma part, due à une veille trop tardive et est donc complètement hors de propos. Je l'ai d'ailleurs expliqué dans mon dernier post

    codiallement
    En faite cela va dépendre du compilateur, des optimisations (explique dans les autre réponses).... Donc cela peux faire 25 comme 20, comme autre chose.

    Par contre du coup ce code :

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (test1() ||test2())
    {
    .
    .
    .
    }
    va exécuter en premier test1() et :
    - si vrai : ne va pas appeler test2
    - si faux : va appeler test2

    ou, je me trompe?

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par doccpu Voir le message
    non, non, c'est pas "ça peux", mais "ça doit" faire 5*5 = 25
    On va etre clair:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      int n = 5, x;
      x = ++n * --n;
    est un comportement indefini. N'importe quoi peut arriver a partir du moment ou le code doit etre execute, y compris avant l'execution (je ne connais pas de cas, pour d'autre cas de comportement indefini tel que le dereferencement d'un pointeur nul ou du depassement de capacite des entiers signes, ca c'est deja vu suite a des optimiseurs pousses).

    Si tu veux des references, cherche "sequence point" dans la norme et le paragraphe suivant
    Citation Envoyé par ISO/IEC 14882:1998, 5/4
    Between the previous and next sequence point a scalar object shall have its stored value modified at most one by the evaluation of an expression.
    (Note: il est bien connu que la formation de la norme n'est pas toujours claire en ce qui concerne les points de sequencement, entre autres problemes, il n'est pas necessairement d'ordre total entre eux; la prochaine norme utilisera un concept different pour expliquer ce genre de choses, entre autres pour specifier des contraintes sur le multi-threads).

Discussions similaires

  1. ordre d'exécution des opérateurs de stream
    Par yan dans le forum Langage
    Réponses: 6
    Dernier message: 27/04/2010, 16h58
  2. Ordre de traitement des opérateurs sur un select
    Par tchoimars dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/05/2007, 18h42
  3. Réponses: 5
    Dernier message: 08/03/2005, 13h22
  4. [FLASH MX]Ordre de défilement des images
    Par San Soussy dans le forum Flash
    Réponses: 3
    Dernier message: 28/05/2004, 16h37
  5. Réponses: 5
    Dernier message: 11/12/2003, 14h45

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