Quel est l’ordre de priorité des opérateurs dans Visual Basic 6.0 ?
-
09-06-2019 - |
Question
Quel est l'ordre de priorité des opérateurs dans Visual Basic 6.0 (VB6) ?
En particulier, pour les opérateurs logiques.
La solution
Ordre de priorité des opérations arithmétiques
^
-
(négation unaire)*
,/
\
Mod
+
,-
(addition/soustraction binaire)&
Ordre de priorité des opérations de comparaison
=
<>
<
>
<=
>=
Like
,Is
Ordre de priorité des opérations logiques
Not
And
Or
Xor
Eqv
Imp
Source: Sams Apprenez-vous Visual Basic 6 en 24 heures - Annexe A :Priorité des opérateurs
Autres conseils
Cela dépend si vous êtes ou non dans le débogueur. Vraiment. Eh bien, en quelque sorte.
Les parenthèses viennent en premier, bien sûr.Puis arithmétique (+,-,*,/, etc).Puis des comparaisons (>, <, =, etc).Puis les opérateurs logiques.Le problème est que l’ordre d’exécution au sein d’un niveau de priorité donné n’est pas défini.Étant donné l'expression suivante :
If A < B And B < C Then
vous avez la garantie du <
les opérateurs d’inégalité seront tous deux évalués avant l’étape logique And
comparaison.Mais vous n’êtes pas assuré de savoir quelle comparaison d’inégalités sera exécutée en premier.
IIRC, le débogueur s'exécute de gauche à droite, mais l'application compilée s'exécute de droite à gauche. Je pourrais les avoir à l'envers (ça fait longtemps), mais l'important c'est qu'ils sont différents.La priorité réelle ne change pas, mais l'ordre d'exécution pourrait le faire.
Utiliser des parenthèses
MODIFIER:C'est mon conseil pour le nouveau code !Mais Oscar lit le code de quelqu'un d'autre et doit donc le comprendre d'une manière ou d'une autre.Je suggère le sujet du manuel VB6 Priorité des opérateurs.Malheureusement, ce sujet ne semble pas être dans le Manuel MSDN en ligne VB6, je vais donc coller ici les informations sur l'opérateur logique.Si vous avez installé l'aide VB6 (la bibliothèque MSDN), vous l'aurez sur votre machine.
Les opérateurs logiques sont évalués dans l'ordre de priorité suivant :
Not And Or Xor Eqv Imp
La rubrique explique également la priorité des opérateurs de comparaison et arithmétiques.
Je suggérerais qu'une fois que vous avez compris la priorité, vous mettez entre parenthèses, sauf s'il y a une bonne raison de ne pas modifier le code.