leider sind die aussagen hier fast alle inkorrekt.
erstmal funktioniert das ganze nur, weil der autoit interpreter relativ intelligent ist, und je nach aktueller aufgabe selbst entscheidet, ob jetzt ein boolean wert oder eben int/long/float/double benötigt werden.
durch den interpreter festgelegt ist nur, das 0 auch als False interpretiert werden kann.
somit ergibt sich aus reiner formaler logik das nicht 0 = True sein muss.
somit ergibt sich das:
ebenfalls True zurück geben wird, da And nur in bezug auf boolean werte angewendet werden kann.
da 2!=0 gilt folgt daraus 2->True. selbiges verfahren wird auf 3 angewendet... 3!=0 --> 3->True...
daraus folgt:
Code:
2 And 3 -> True And True -> True
bemerkt der interpreter, das man eine rechenoperation über einem boolean wert nutzen möchte, so gilt allerdings tatsächlich False->0, und True->1
überprüfen kann man das ganze zb so:
Code:
MsgBox(0, 'Rechnung', '3 * (2 And 3) = '&3 * (2 And 3))
hier wird zunächst der ausdruck in klammern ausgewertet. 2 And 3 -> True
nun soll eine rechenoperation ausgeführt werden: "3 * True". da über boolean werte in diesem sinne rechendefinitionen nicht definiert sind, wird durch substitution True in 1 umgewandelt.
dh. 3 * True -> 3 * 1 -> 3
somit erhalten wir hier als ergebnis 3 =)
davon abgesehen ist es NICHT möglich diese im interpreter gespeicherten definitionen von True und False abzuändern, wie irgendjemand vorher meinte.