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

Algorithmes et structures de données Discussion :

Priorité des opérateurs


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Billets dans le blog
    16
    Par défaut Priorité des opérateurs
    bonjour,

    si on appelle non8, et8 et ou8 pour les opérateurs logiques bit à bit (sur 8, ou 16, ou plus, de bits) quel est la priorité par rapport aux opérateur - + * / et modulo? Dans quel ordre classe-t-on tous ces opérateur?

    quelqu'un a-t-il une idée?

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour



    Et ben alors ? Ton Google est en panne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Classes de priorités
     
    Priorité 1 (la plus forte):  	() 
    Priorité 2:  	! ++ -- 
    Priorité 3:  	* / % 
    Priorité 4:  	+ - 
    Priorité 5:  	< <= > >= 
    Priorité 6:  	== != 
    Priorité 7:  	&& 
    Priorité 8:  	|| 
    Priorité 9 (la plus faible):  	= += -= *= /= %= 
     
    Evaluation d'opérateurs de la même classe
     
     --> Dans chaque classe de priorité, les opérateurs ont la même priorité. Si nous avons une suite d'opérateurs binaires de la même classe, l'évaluation se fait en passant de la gauche vers la droite dans l'expression.
    <-- Pour les opérateurs unaires (!,++,--) et pour les opérateurs d'affectation (=,+=,-=,*=,/=,%=), l'évaluation se fait de droite à gauche dans l'expression.

  3. #3
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Billets dans le blog
    16
    Par défaut
    c'est vrai que le C fait comme ça,

    dans mon langage, la priorité des opérateurs, du plus prioritaire au moins Prioritaire, est:
    • expressions parenthèsées
    • puissance (^)
    • moins unaire
    • * / mod
    • + -
    • opérateur de relation (= <> >= > <= <)
    • opérateur logique non (booléen)
    • et logique (booléen)
    • ou logique (booléen)


    dans mon langage, les opérateurs logiques bit à bit sont non8, ou8, et8.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x:=non8 -(2 ^ 63)   ( x vaut alors (2^63) -1)
    x:=non8 -2 (x vaut alors 1)
    si x est le code ASCII d'un chiffre, x et8 15 est la valeur de ce chiffre (masque "et" avec 15=0F en hexadécimal)

    et si je faisait ceci:
    • expressions parenthèsées
    • puissance (^)
    • moins unaire
    • * / mod
    • + -
    • non8
    • et8
    • ou8
    • opérateur de relation (= <> >= > <= <)
    • opérateur logique non (booléen)
    • et logique (booléen)
    • ou logique (booléen)


    qu'en pensez-vous?

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Citation Envoyé par matser Voir le message
    qu'en pensez-vous?
    Pas du bien.
    Et je reste poli.

    Quand on invente un langage (comme le verlan, le langage sms, etc) c'est qu'on parle mal sa propre langue. C'est une forme d'analphabétisme.

    Tu ne donnes aucun élément pour différencier "ET8" et "ET", par exemple. J'ai plutôt l'impression que c'est exactement pareil. Idem pour "OU8"/"OU ou "NON8"/"NON".

    dans mon langage
    C'est un langage qui existe ou que tu crois construire ? A-t-il un nom officiel ?
    Ton langage est faiblement typé. N'est-ce pas ?

    Quelle est la finalité du projet ?

  5. #5
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Billets dans le blog
    16
    Par défaut
    la différence entre "et8" et "et" est que et8 est un et bit à bit.
    Par exemple:

    11110000 et8 10011010 = 10010000
    x:=non8 -(2 ^ 63) ( x vaut alors (2^63) -1)
    x:=non8 -2 (x vaut alors 1)
    00001111 ou8 00101101=00101111
    dans mon langage, les opérateurs logiques bit à bit sont non8, ou8, et8.
    la finalité est un compilateur

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Ce n'est pas la peine de copier-coller les définitions. On avait compris la première fois.

    Tu n'as pas répondu sur la force du typage. C'est ça qui est important. Les ordinateurs sont des bouliers. Ils ne comprennent que les nombres entiers positifs. Si tu as d'autres objets, comme les nombres négatifs, les nombres à virgules, les lettres, les couleurs, etc, c'est que tu fais une bijection (une correspondance) entre ton espace de valeurs possibles d'entiers naturels vers l'espace des valeurs cibles. Et tout est question d'interprétation.

    Tu sembles considérer que "faux" est 0, et "vrai", toute autre valeur que 0. Mais c'est un choix non-obligatoire. Sous Linux, une application renvoie 0 (donc vrai) quand l'application a bien marché, car il n'y a rien à dire, et un code erreur différent de 0 (donc faux) s'il y a eu un problème; et le code-erreur dénonce le problème. Ce qui est plus intelligent que 0=faux et 1=vrai.

    Je ne suis pas sûr que faire une opération bit à bit sur une variable et se demander si le résultat est vrai ou faux ait du sens. D'où la question du typage. Et de la force du typage.

    De plus, la priorité sur les opérations sont des prophéties auto-réalisatrices. Si tu dis à tes utilisateurs "Voilà comment on doit écrire", ils le feront. Par exemple, dans l'algèbre de Boole, le "ET" et le "OU INCLUSIF" sont totalement miroirs. Il n'y a aucune raison de donner la priorité au "ET". Mais comme cela rappelle les règles de l'algèbre que tout le monde a apprises à l'école primaire, alors on utilise une écriture polynomiale (somme de produit) qui ravit tout le monde. Alors que c'est sans raison d'être. Et certains s'étranglent quand ils voient ceci :
    Phrase qui est fausse dans l'ensemble des entiers mais vraie dans l'ensemble de Boole.
    On pourrait choisir le "OU" prioritaire sur le "ET". Et l'écriture deviendrait :
    Plutôt perturbant. Non ?
    Voilà pourquoi on ne le fait pas.
    C'est une convention; une convention arbitraire.

    Donc choisis ce que tu veux. Tu auras toujours raison.
    Tu peux reprendre les priorités du java qui fait la même distinction que toi. Mais le java est bien typé. Pas sûr que le langage admette le test conditionnel qui permet de dire si "ROUGE" est vrai ou faux; ou si "Q" est positif ou négatif.

    J'espère t'avoir ouvert plus d'horizons qu'obscurci tes idées.

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

Discussions similaires

  1. Priorité des opérateurs % et ++
    Par G3G3 dans le forum Débuter
    Réponses: 16
    Dernier message: 12/02/2008, 09h40
  2. [OCaml & F#] Priorité des opérateurs
    Par SpiceGuid dans le forum Caml
    Réponses: 7
    Dernier message: 01/01/2008, 15h00
  3. priorité des opérateurs
    Par new_wave dans le forum SQL
    Réponses: 13
    Dernier message: 08/11/2007, 21h44
  4. Priorité des opérateurs
    Par neuromencien dans le forum Langage
    Réponses: 3
    Dernier message: 14/05/2007, 17h06
  5. Réponses: 3
    Dernier message: 31/08/2006, 10h39

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