English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Artikel werden Sie die Regeln zur Berechnung von Ausdrücken mit Operatoren und Operanden kennenlernen.
Operator Priorität ist eine Sammlung von Regeln, die zur Berechnung eines gegebenen mathematischen Ausdrucks verwendet werden. Wenn mehrere Operatoren in einem Ausdruck verwendet werden, werden sie in einer bestimmten Reihenfolge berechnet, die als Operator priorität bezeichnet wird. Einige Operatoren haben eine höhere Priorität als andere, was den Berechnungsstil des Ausdrucks beeinflusst.
Die nachstehende Liste enthält SwiftOperatorDie Priorität. Je höher sie in der Tabelle angezeigt wird, desto höher ist die Priorität.
Operatorgruppen | Example |
Bitschiebe Priorität | >> &<< &>> >> |
Priorität der Multiplikation | &* % & * / |
Additionspräferenz | | &+ &- + – ^ |
Priorität der Bereichserstellung | ..< … |
Priorität der Typumwandlung | ist als |
Priorität der Kombinationsoperator | ?? |
Vergleichspräferenz | != > < >= <= === == |
Logische Verknüpfung Priorität | && |
Logical Disjunction Precedence | || |
Default Precedence | ~> |
Ternary Operator Precedence | ?: |
Arrow Function Precedence | ( ) |
Assignment Precedence | |= %= /= &<<= &>>= &= *= >>= <<= ^= += -= |
let x = 4 + 5 * 5 print(x)
When you run the above program, the output will be:
29
Im obigen Beispiel könnte man erwarten, dass die Ausgabe von links nach rechts lesend45Aber, die Priorität des Multiplikationsoperators ist höher als die des Additionoperators, daher der Ausdruck4 + 5 * 5wird berechnet4 + (5 * 5) wird daher auf dem Bildschirm ausgegeben29。
Schritt | Operator | Ausdruck | Wert, der von dem Ausdruck zurückgegeben wird |
---|---|---|---|
1 | * | 5 * 5 | 25 |
2 | + | 4 + 25 | 29 |
3 | = | print(x) | 29 |
var y = 15 y += 10 - 2 * 3 print(y)
When you run the above program, the output will be:
19
Im obigen Beispiel ist der Ausdruck der Variable y var y = 15zuweisen15。
In dem nächsten Ausdruck y + = 10-2 * 3in dem, die Priorität des Multiplikationsoperators ist höher als die des Subtraktionskomplexzuweisungsoperators (+ =)
Daher, der Ausdruck y + = 10-2 * 3 wird berechnet als y = y + (10-(2 * 3))。
Schritt | Operator | Ausdruck | Wert, der von dem Ausdruck zurückgegeben wird |
1 | = | var y = 15 | 15 |
2 | * | 2 * 3 | 6 |
3 | -- | 10-6 | 4 |
4 | + = | 15 + 4 | 19 |
Obwohl es durch die Präferenz der Operator priorität definierte vordefinierte Regeln gibt, um Ausdrücke zu bewerten, möchten Sie möglicherweise wissen, was passiert, wenn mehrere Operationen der gleichen Priorität vorhanden sind. Die Assoziativität der Operatoren definiert, wie Operationen der gleichen Priorität kombiniert werden.
In Swift können Operatoren linksverbunden, rechtsverbunden oder nicht verknüpft sein. Wenn sie in einem Ausdruck in der Reihenfolge verwendet werden, werden linksverbundene Operatoren, Operanden von der linken Seite der Anweisung gruppiert, rechtsverbundene Operatoren und nicht verknüpfte Operatoren haben kein definiertes Verhalten.
Die nachstehende Tabelle zeigt die Verknüpfung und Priorität der Swift-Operatoren.
Operatorgruppen | Example | Verknüpfung |
---|---|---|
Priorität der Bitschiebeoperationen | >>&<<&>> >> | 无 |
Priorität der Multiplikation | &*%&* / | Left associative |
Additionspräferenz | | &+&-+-^ | Left associative |
Priorität der Bereichserstellung | .. <... | 无 |
Priorität der Typumwandlung | ist ein | 无 |
Priorität der Kombinationsoperator | ?? | Right associative |
Vergleichspräferenz | !=> <> = <= === == | 无 |
Logical Conjunction Precedence | && | Left associative |
Logical Disjunction Precedence | || | Left associative |
Default Precedence | ~> | 无 |
Ternary Operator Precedence | ?: | Right associative |
Arrow Function Precedence | () | Right associative |
Assignment Precedence | | =%= / =&<< =&>> =&= * = >> = << = ^ = | Right associative |
let x = 40 / 2 * 10 print(x)
When you run the above program, the output will be:
200
In the above program, the expression is calculated from left to right because the operators belong to the multiplication precedence group and have left associativity. Therefore, the division operation is executed early, resulting in200. If you want to perform the multiplication operation first, what should you do? You need to place2 * 10Expressions wrapped in curly braces {}, as shown below:
let x = 40 / (2 * 10) print(x)
When you run the above program, the output will be:
2
You do not need to remember the precedence and associativity table. In most cases, the precedence and associativity of operators are quite meaningful in themselves. If you have any doubts, you can always use this table as a reference. Moreover, it is best to use parentheses to make the code easier to understand.