Unterschied zwischen "Not" und "<>" ?

  • Hallo,
    ich verstehe den Unterschied zwischen "Not" und "<>" nicht so richtig.
    Meine Logik sag mir, wenn etwas nicht zutrifft, ist es nicht gleich.

    Deshalb habe ich mal zwei Beispiele erstellt.

    Funktioniert nicht:

    [autoit]

    $test = "9"
    If Not $test = "10" Then
    MsgBox(0,"","true")
    Else
    MsgBox(0,"","false")
    EndIf

    [/autoit]

    Funktioniert:

    [autoit]

    $test = "9"
    If $test <> "10" Then
    MsgBox(0,"","true")
    Else
    MsgBox(0,"","false")
    EndIf

    [/autoit]

    Aber weshalb ist das so?
    Und welchen Operator würdet ihr allgemein bevorzugen?

    mfg
    Sonicx

    Einmal editiert, zuletzt von SonicX (25. Februar 2011 um 11:18)

  • Not ist ein boolescher Operator, d.h. wahr oder falsch bzw. nicht wahr oder nicht falsch.

    Du kannst damit nicht prüfen, ob z.B. eine Zahl größer ist als eine andere.

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Not bindet stärker als =. Daher wird (Not $test) = 10 überprüft. Der String wird als True Interpretiert, darauf wird false und aus "10" wird true. und da true <> false, kommt immer die Box für false.
    Du musst also Klammern setzen Not ($test = "10")

  • Als Beispiel mal
    @Compiled Gibt 1 zurück, wenn das Skript eine kompilierte exe-Datei ist; ansonsten wird 0 zurückgegeben

    [autoit]

    If Not @compiled Then
    Do
    Sleep(10)
    Until 1
    EndIf

    [/autoit]

    Selbes Ergebnis

    [autoit]

    If @compiled <> 1 Then
    Do
    Sleep(10)
    Until 1
    EndIf

    [/autoit]

    Das geht aber nur wenn du einen Wert hast der Wahr oder Falsch bzw. 1 oder 0 zurückgibt,
    wenn du Unterschiede eines Wertes haben willst, sind im Normalfall eigentlich die Vergleichsoperatoren besser

  • Ahh.. jetzt verstehe ich es. Danke!

    Eben habe ich auch noch die Geschwindigkeit mit TimerDiff getestet.
    Bei 100.000 Durchläufen ist "<>" bei mir um ganze 50ms schneller :rofl:
    Ich werde also bei den Klammern bleiben :D