von Karolus » Do, 25.06.2015 17:52
Hallo
Ja, weil ja ohne Klammern strikt von links nach rechts ausgewertet wird, das hab ich zumindest schon irgendwo gelesen, was dann also
(not (a=b)) and (c=d) ergäbe
Es wäre ja ok, wenn wenigstens der VergleichsOperator
= vor der `not`-Operation ausgeführt würde, tut es aber nicht, ohne Klammern wird ausgewertet ((not a)=b) and (c=d)
und es kommt noch schlimmer, die Operation `
not a` wird intern
berechnet über den Term `
(a*-1)-1` was prima funktioniert wenn a ein
tatsächlich ein Wahrheitswert -1(wahr) oder 0(falsch) ist, nicht aber bei jeder anderen Zahl.
(Hab ich eigentlich schon erwähnt das Basic völliger Schrott ist?)
Bevor jemand die Frage stellt - ja Python macht das besser, Vergleichsoperatoren ( ==, <=, >=, <, >, !=) haben Vorzug vor logischen Operationen, und selbst ein einzelnes `not 42` gibt schlicht False zurück anstatt
-43
Hallo
[quote]Ja, weil ja ohne Klammern strikt von links nach rechts ausgewertet wird, das hab ich zumindest schon irgendwo gelesen, was dann also
(not (a=b)) and (c=d) ergäbe[/quote]
Es wäre ja ok, wenn wenigstens der VergleichsOperator [color=#FF0000]=[/color] [b]vor[/b] der `not`-Operation ausgeführt würde, tut es aber nicht, ohne Klammern wird ausgewertet ((not a)=b) and (c=d)
und es kommt noch schlimmer, die Operation `[i]not a[/i]` wird intern [u]berechnet[/u] über den Term `[i](a*-1)-1[/i]` was prima funktioniert wenn a ein [b]tatsächlich[/b] ein Wahrheitswert -1(wahr) oder 0(falsch) ist, nicht aber bei jeder anderen Zahl.
(Hab ich eigentlich schon erwähnt das Basic völliger Schrott ist?)
Bevor jemand die Frage stellt - ja Python macht das besser, Vergleichsoperatoren ( ==, <=, >=, <, >, !=) haben Vorzug vor logischen Operationen, und selbst ein einzelnes `not 42` gibt schlicht False zurück anstatt [color=#FF0000]-43[/color]