> so benutzt z.B. PowerBasic für #True nicht 1, sondern -1.
war aufm C64 genauso, wo ich mit ausdrücken rechnen gelernt hab.
ich hatte auch schon drum diskutiert, dass es in PureB genauso gemacht wird.
(weil -1 = alle bits gesetzt, 0 = alle bits gelöscht, ~0 = -1, etc.)
> ohne jede Not
und eben das ist der punkt.
PureBasic gehört nicht zu den sprachen, wo es einen Vorteil bringen würde,
es ist also höchstens "irgendwie chique", aber ohne jeden Nutzen.
wie man hier sehen kann, ist die klassische If-Variante nicht nur viel besser lesbar,
sondern auch noch annähernd doppelt so schnell:
(remember: Debugger ausschalten!)
Code: Alles auswählen
x = 0
stp = 7
timer1 = ElapsedMilliseconds()
For n=0 To 999999999
x = x + stp * (( x < 799 ) Or #False ) - 800 * ((x >= 799 ) Or #False )
Next
timer1 = ElapsedMilliseconds() - timer1
x = 0
timer2 = ElapsedMilliseconds()
For n=0 To 999999999
x + stp
If x > 799
x - 800
EndIf
Next
timer2 = ElapsedMilliseconds() - timer2
out$ = "Boolesh Algorithm: "+Str(timer1) + #CRLF$
out$ + "Algorithm using If: "+Str(timer2)
MessageRequester("Test",Out$)
mal ganz abgesehen davon, dass die ergebnisse nicht genau übereinstimmen.
es ist also einfach widersinnig, in PB so ein Konstrukt zu benutzen.
die einzige anwendung bleibt also die zuweisung ein eine variable,
die für eine spätere auswertung den Bool-Wert rückspeichern soll.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.