@Dobro et Ollivier:
Ok, mauvais exemple; j'ai voulu trop simplifier et je me suis planté.
@SPH:je suis d'accord, ça n'a pas de sens "utile". Mais du point de vue de la logique formelle, le test n'en est pas moins valide.
Je recommence avec un autre exemple:
Le cas dans lequel je me suis trouvé ressemble plus à:
Code : Tout sélectionner
x=1
; Condition 1 (vraie)
If Not (x=0 And x=1)
Debug "Vrai"
Else
Debug "Faux"
EndIf
; Condition 2 (fausse)
If Not (x=1 Or x=0)
Debug "Vrai"
Else
Debug "Faux"
EndIf
; Condition 1 AND condition 2
If Not (x=0 And x=1) And Not (x=1 Or x=0)
Debug "Vrai"
Else
Debug "Faux"
EndIf
La condition 1 donne "vrai", ce qui est correct.
La condition 2 donne "faux", ce qui est toujours correct.
Quand je mets les deux dans un seul "if" avec juste un "and" au milieu, ça me donne "vrai".
Et là, je ne suis plus d'accord: [vrai] And [faux], ça devrait donner "faux".
En isolant un peu plus le soucis, on obtient ceci:
Code : Tout sélectionner
x=1
; Condition 1 AND condition 2 avec parenthèses
If Not (x=0) And Not (x=1)
Debug "Vrai"
Else
Debug "Faux"
EndIf
; Condition 1 AND condition 2 sans parenthèses
If Not x=0 And Not x=1
Debug "Vrai"
Else
Debug "Faux"
EndIf
Selon moi, les parenthèses ne devraient rien changer. Et pourtant les deux tests renvoient des résultats différents.
Où est l'erreur ?