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 :

Visual Studio et priorités d'opérations


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 12
    Par défaut Visual Studio et priorités d'opérations
    Bonjour, je ne sais pas si je post dans la bonne section. Si ce n'est pas le cas dites le moi S.V.P. Bref je me demande si visual studio respecte vraiment l'ordre des priorité d'opération. Aujourd'hui j'ai vu passé un calcul simple sur le web qui est 8/ 2(2+2) officiellement la réponse est 1. Lorsque je le calcul manuellement, j'ai effectivement 1 comme réponse ainsi que sur ma calculatrice de comptabilité. Mais parcontre en vérifiant en c# avec visual studio 2017, la réponse donne 16 ... Je me demande donc si il est normal que certains calculs soit erroné dans certains code ??

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour

    Sauf horreur de ma part en VS les parenthèses passent en premier donc 2+2 = 4

    Ensuite, il y a deux opérations une division et une multiplication qu'il considère être du même niveau de priorité (même chose pour l'addition et la soustraction). Alors ce qui l'emporte c'est l'orde de gauche à droite. Donc 8/2 = 4 puis 4 multiplié par 4 donne 16

  3. #3
    Membre Expert
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 941
    Par défaut
    Citation Envoyé par azhek Voir le message
    Bonjour, je ne sais pas si je post dans la bonne section. Si ce n'est pas le cas dites le moi S.V.P. Bref je me demande si visual studio respecte vraiment l'ordre des priorité d'opération. Aujourd'hui j'ai vu passé un calcul simple sur le web qui est 8/ 2(2+2) officiellement la réponse est 1. Lorsque je le calcul manuellement, j'ai effectivement 1 comme réponse ainsi que sur ma calculatrice de comptabilité. Mais parcontre en vérifiant en c# avec visual studio 2017, la réponse donne 16 ... Je me demande donc si il est normal que certains calculs soit erroné dans certains code ??
    Est-ce-que tu ne confondrais pas l'écriture sous forme de fraction et l'écriture sous forme d'une suite d'opération ? Parce-que 8 "sur" 2 x (2+2) se traduit en ligne par 8 / (2 * (2 + 2)) et non 8 / 2 * (2 + 2), car dans ce cas la priorité des opérateurs s'applique telle que clementmarcotte l'a décrite.

  4. #4
    Membre très actif Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    339
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 339
    Par défaut
    Infos prises dans divers articles de presse :

    Dans les pays anglo-saxons deux règles existent. Celle de l’acronyme BODMAS, qui donne la priorité aux parenthèses, puissances, divisions, multiplications, additions et enfin soustractions, et mène donc à la réponse 16. Mais on trouve aussi la méthode PEMDAS qui suit le même ordre de priorité... mais inverse divisions et multiplications et donne donc la réponse 1.
    Le New York Times ne cherche pas à trancher ce conflit entre les deux acronymes, mais se range sans problème du côté de la réponse 16.

    Tout en reconnaissant qu’aucun mathématicien qui se respecte n’irait écrire une opération de la sorte et indiquerait clairement la priorité qu’il faut donner en ajoutant une autre paire de parenthèse, le journal explique que généralement la convention veut de toute façon que lorsque deux opérations d’égale priorité s’affrontent (addition et soustraction ou multiplication et division) on calcule tout simplement dans le sens de lecture, donc de gauche à droite.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Pour l'arrondi, Microsoft respecte le standard de l'IEEE, essentiellement le 5 est arrondi en plus ou en moins, toujours vers le nombre pair. Je ne serais pas surpris qu'ils suivent les standards de l'IEEE pour l'ensemble des calculs. Mais, rien de mieux que les parenthèses.

  6. #6
    Membre éclairé

    Profil pro
    Chef de Projet / Développeur
    Inscrit en
    Juin 2002
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de Projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2002
    Messages : 619
    Par défaut
    Citation Envoyé par joKED Voir le message
    Infos prises dans divers articles de presse :

    Le New York Times ne cherche pas à trancher ce conflit entre les deux acronymes, mais se range sans problème du côté de la réponse 16.

    Tout en reconnaissant qu’aucun mathématicien qui se respecte n’irait écrire une opération de la sorte et indiquerait clairement la priorité qu’il faut donner en ajoutant une autre paire de parenthèse, le journal explique que généralement la convention veut de toute façon que lorsque deux opérations d’égale priorité s’affrontent (addition et soustraction ou multiplication et division) on calcule tout simplement dans le sens de lecture, donc de gauche à droite.
    En effet. Et le débat ayant été largement débattu et pour ainsi dire tranché par ailleurs la semaine dernière.
    Pourquoi le ramener ici ?

    Le Dr en mathématique interrogé et qui souligne qu'aucun mathématicien n'irait écrire un truc aussi ambigu est une bonne leçon pour les développeurs.

    Il n'est pas rare, sur les forums, de se faire reprendre pour une parenthèse ou une accolade inutile.
    Mais personnellement, si ces affirmation sont techniquement exactes, je trouve qu'elles manquent totalement de pragmatisme.
    Une parenthèse inutile ne ralentira ni le compilateur et encore moins l'exécution, alors qu'elle facilitera la lecture.

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Citation Envoyé par Noxen Voir le message
    Est-ce-que tu ne confondrais pas l'écriture sous forme de fraction et l'écriture sous forme d'une suite d'opération ? Parce-que 8 "sur" 2 x (2+2) se traduit en ligne par 8 / (2 * (2 + 2)) et non 8 / 2 * (2 + 2), car dans ce cas la priorité des opérateurs s'applique telle que clementmarcotte l'a décrite.
    Comme l'explique Noxen, le résultat dépendra de comment est posée l'opération sur papier.
    Soit le 8 est au dessus de la barre de division et le 2 est en dessous, laissant l'opération (2+2) à coté, et la réponse est 16.
    Soit le 8 est seul au dessus de la barre de division et tout le reste au dessous et le résultat est 1.
    Mais dans ce cas l'opération à plat doit être posé de cette façon : 8/(2(2+2))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       8
    --------
     2(2+2)
    Donc la réponse officielle de l'opération à plat telle que tu la posée est 16 et non pas 1.

Discussions similaires

  1. News Visual Studio
    Par farscape dans le forum Visual C++
    Réponses: 34
    Dernier message: 27/04/2010, 10h21
  2. Comment voir les opérations internes en cours sur Visual Studio ?
    Par clementratel dans le forum Microsoft BI
    Réponses: 0
    Dernier message: 21/04/2008, 09h36
  3. [IDE] Visual Studio 2005 Express
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 130
    Dernier message: 23/12/2006, 15h08
  4. Probleme d'utilisation de directX 9 avec visual studio.net
    Par cranedoeuf dans le forum DirectX
    Réponses: 1
    Dernier message: 24/05/2004, 04h33
  5. Version de Windows dans Visual Studio !!!
    Par Jasmine dans le forum MFC
    Réponses: 3
    Dernier message: 18/03/2004, 17h40

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