Der Martin: Drei Abfragebedingungen in if-Schleife

Beitrag lesen

Hallo Björn,

if($var1 or $var2 and !$var3)
Ist das richtig so? Bei mir wird die Schleife auch aufgerufen, wenn $var3 wahr ist...

dann setz mal Klammern, um den Ausdruck eindeutiger zu machen:
   if (($var1 or $var2) and !$var3)
Das halte ich generell für eine gute Idee, auch weil es dem Leser die Logik des Ausdrucks deutlicher vermittelt - selbst dann, wenn die Klammern nicht unbedingt nötig wären.

Offensichtlich bindet der UND-Operator stärker (hat eine höhere Priorität) als der ODER-Operator, so dass die klammerfreie Version intern als
   if ($var1 or ($var2 and !$var3))
ausgewertet wird. In diesem Fall wäre der Gesamtausdruck schon wahr, wenn nur $var1 wahr ist, und der Rest wird dann gar nicht mehr beachtet.

So long,
 Martin

--
Lebensmotto der Egoisten:
Was ist so schlimm daran, dass jeder nur an sich selbst denkt? Dann ist doch an alle gedacht!