Sprachreferenz - Operatoren

AutoIt hat die folgenden Zuweisungs-, Vergleichs-, mathematischen und logischen Operatoren.

Operator Beschreibung
Zugehörige Operatoren
= Zuweisung. Z. B. $vVar = 5 (weist die Zahl 5 $vVar zu)
+= Addition und Zuweisung. Z. B. $vVar += 1 (addiert 1 zu $vVar)
-= Subtraktion und Zuweisung
*= Multiplikation und Zuweisung
/= Division und Zuweisung
Verkettungsoperatoren
& Verketten/Verbinden zweier Strings. Z. B. "eins" & 10 (entspricht "eins10" und nicht 11)
&= Verkettung und Zuweisung. Z. B. $vVar = "eins" und dann $vVar &= 10 ($vVar entspricht nun "eins10")
Mathematische Operatoren
+ Zwei Zahlen addieren. Z. B. 10 + 20 (das Ergebnis ist 30)
- Zwei Zahlen subtrahieren. Z. B. 20 - 10 (das Ergebnis ist 10)
Wirkt auch als einstelliges Minus (setzt den negativen Wert einer Variablen)
Siehe nachstehende Erläuterung
* Zwei Zahlen multiplizieren. Z. B. 20 * 10 (das Ergebnis ist 200)
/ Zwei Zahlen dividieren. Z. B. 20 / 10 (das Ergebnis ist 2)
^ Eine Zahl (Basis) mit ihrem Exponent potenzieren. Z. B. 2 ^ 4 (das Ergebnis ist 16)
Vergleichende Operatoren (Groß- und Kleinschreibung wird nicht berücksichtigt, ausgenommen ==)
= Prüft, ob zwei Werte gleich sind. Z. B. If $vVar = 5 Then (true falls $vVar 5 entspricht). Groß- und Kleinschreibung wird nicht berücksichtigt, falls Strings verwendet werden. Weiter unten gibt es Informationen zum Vergleich mit gemischten Datentypen.
== Prüft, ob zwei Strings gleich sind. Groß- und Kleinschreibung wird berücksichtigt. Die linken und rechten Werte werden in Strings umgewandelt, falls sie dies nicht schon sind. Dieser Operator sollte nur für String-Vergleiche verwendet werden, wenn die Groß- und Kleinschreibung berücksichtigt werden soll.
<> Prüft, ob zwei Werte nicht gleich sind. Groß- und Kleinschreibung wird nicht berücksichtigt, falls Strings verwendet werden. Um die Ungleichheit unter Beachtung der Groß- und Kleinschreibung festzustellen, ist Not ("string1" == "string2") zu verwenden.
> Prüft, ob der erste Wert größer als der zweite ist. Die Strings werden lexikographisch verglichen, auch wenn die Inhalte der Strings numerisch sind.
>= Prüft, ob der erste Wert größer/gleich dem zweiten ist. Die Strings werden lexikographisch verglichen, auch wenn die Inhalte der Strings numerisch sind.
< Prüft, ob der erste Wert kleiner als der zweite ist. Die Strings werden lexikographisch verglichen, auch wenn die Inhalte der Strings numerisch sind.
<= Prüft, ob der erste Wert kleiner/gleich dem zweiten ist. Die Strings werden lexikographisch verglichen, auch wenn die Inhalte der Strings numerisch sind.
Logische Operatoren
And Logisches UND. Z. B. If $vVar = 5 And $vVar2 > 6 Then (True falls $vVar 5 entspricht und $vVar2 größer als 6 ist)
Or Logisches ODER. Z. B. If $vVar = 5 Or $vVar2 > 6 Then (True falls $vVar gleich 5 ist oder $vVar2 größer als 6 ist)
Not Logisches NICHT. Z. B. Not 1 (False)
Bedingter Operator
? : Es ist ein Ausdruck auszuwählen z. B. $condition ? $expression1 : $expression2 ($expression1 wenn $condition True ist oder $expression2 False ist) Ein Beispiel ist beim Ternary Operator zu finden.

Priorität

Wenn mehr als ein Operator in einem Ausdruck verwendet werden, bestimmt die Operatorpriorität die Reihenfolge der Verwendung. Die Priorität, die in AutoIt verwendet wird, ist weiter unten aufgelistet. Wenn zwei Operatoren die gleiche Priorität besitzen, wird der Ausdruck von links nach rechts ausgewertet.

Von der höchsten zur niedrigsten Priorität:

Not
^
* /
+ -
&
< > <= >= = <> ==

And Or


Z. B. 2 + 4 * 10 entspricht 42:

4 * 10 (entspricht 40)

2 + 40 (entspricht 42)

Da der * eine höhere Priorität besitzt als das + wird er vor der Addition verwendet. (Punktrechnung vor Strichrechnung)

Obwohl der Vorrang der Operatoren in den meisten Fällen ausreichen sollte, wird empfohlen, Klammern zu verwenden, um die Reihenfolge der Auswertung zu erzwingen, wenn das Ergebnis kritisch ist oder der Ausdruck komplex ist.

Z. B. (2 + 4) * 10 entspricht 60.

Dies gilt insbesondere für den - Operator, der sowohl für binäre Subtraktion (Subtraktion von 2 Zahlen) als auch für die unäre Negation (Setzen des Negativs eines Wertes) verwendet werden kann. Die Verwendung von Klammern wird in diesem Fall dringend empfohlen, um Verwechslungen zu vermeiden.

Kurze Zusammenfassung

Folgendes ist zu beachten, wenn die logischen Operatoren AND, OR verwendet werden:

Z. B. If MyFunc1() Or MyFunc2() Then (MyFunc2() wird nicht aufgerufen, falls MyFunc1() true zurückgibt)

Z. B. If MyFunc1() And MyFunc2() Then (MyFunc2() wird nicht aufgerufen, falls MyFunc1() false zurückgibt)

Vergleich gemischter Datentypen

Beim Vergleich gemischter Datentypen ist Vorsicht geboten, da gemischte Vergleiche normalerweise numerisch durchgeführt werden, sofern nicht der Stringoperator (==) verwendet wird, welcher auch die Groß- und Kleinschreibung berücksichtigt. Die meisten Strings werden mit 0 bewertet, sodass das Ergebnis möglicherweise nicht das erwartete ist. Es wird empfohlen, die zu vergleichenden Elemente vor dem Vergleich mit Number()/String() in denselben Datentyp zu zwingen.

@@SyntaxHighlighting@@ #include Local $iNumber = 0 Local $sString = "Ein String" ; Dies wird als true ausgewertet, wenn der String in eine Zahl, d. h. Null, konvertiert wird If $iNumber = $sString Then MsgBox($MB_SYSTEMMODAL, "", $iNumber & " und '" & $sString & "' sind gleich") EndIf ; Dies wird als false ausgewertet, da der String und die Zahl nach Wert und Datentyp verglichen werden If $iNumber == $sString Then MsgBox($MB_SYSTEMMODAL, "", $iNumber & " und '" & $sString & "' sind gleich") EndIf @@End@@