Operatoren
Operatoren der TapHome-Skriptsprache: arithmetische, Vergleichs-, bitweise und logische Operatoren, ihre 10 Rangstufen, die Falle a & 1 > 0, Kurzschlussauswertung und Entsprechungen in Excel.
Liste der Operatoren
Die Skriptsprache hat arithmetische, Vergleichs-, bitweise und logische Operatoren:
| Gruppe | Operatoren | Beispiel |
|---|---|---|
| Unär | - (Negation), +, ! (logisches NOT) | !IsRaining |
| Multiplikativ | *, / | (20.5 + 9.5) / 2 ergibt 15 |
| Additiv | +, - | "T=" + Te verbindet Text |
| Verschiebung | <<, >> | 8 << 2 ergibt 32 |
| Relational | <, <=, >, >= | Te > 25 |
| Gleichheit | = (gleich), <> oder != (ungleich) | Mode <> 2 |
| Bitweises AND | & | 3 & 1 ergibt 1 |
| Bitweises OR, XOR | |, ^ | 2 | 1 ergibt 3 |
| Logisch | AND, XOR, OR | Te > 25 AND Hu > 60 |
| Zuweisung | := und die zusammengesetzten Formen +=, -=, *=, /=, <<=, >>=, &=, |=, ^= | x += 1 |
XOR mit zwei Zahlen ist ein bitweises XOR: 5 XOR 1 ergibt 4. Mit TRUE und FALSE ist es das logische XOR.
Die Sprache hat kein NOT, ==, %, **, && oder ||. Verwenden Sie !, =, MOD, POWER, AND und OR. 1 == 1 schlägt mit Wrong number of literals and operators in expression fehl, NOT x mit Unknown variable or constant 'NOT'.
Rangfolge
Operatoren werden in dieser Reihenfolge ausgewertet, von der höchsten zur niedrigsten Rangstufe. Operatoren derselben Stufe werden von links nach rechts ausgewertet; Klammern ( ) ändern die Reihenfolge.
*/+-<<>><<=>>==<>!=&|^ANDXOROR
Anders als in C oder JavaScript binden die bitweisen Operatoren stärker als
ANDundOR, aber schwächer als die Vergleiche.a & 1 > 0bedeuteta & (1 > 0). Schreiben Sie immer(a & 1) > 0.
VAR flags := 2;
flags & 2 > 0;
# Result: 0, read as flags & (2 > 0), which is flags & 1
(flags & 2) > 0;
# Result: TRUEEine zusammengesetzte Zuweisung hat die Rangfolge ihrer Operation: x -= a - b wird als (x -= a) - b ausgewertet und x *= 1 + 2 als (x *= 1) + 2. Setzen Sie die rechte Seite in Klammern:
VAR total := 10;
total -= (a - b);Kurzschlussauswertung
AND und OR werten die rechte Seite nur aus, wenn die linke Seite das Ergebnis noch nicht entscheidet. XOR wertet immer beide Seiten aus. Eine Bedingung kann daher den Ausdruck neben ihr schützen:
va2 <> 0 AND va1 / va2 > 1;
# Result: FALSE when va2 is 0, without the Division by zero errorDie rechte Seite wird nicht ausgewertet, wenn va2 den Wert 0 hat. Denselben Schutz für einen Wert bietet IF, das nur den gewählten Zweig auswertet.
Entsprechungen in Excel
Die Bitoperatoren entsprechen diesen Funktionen in Excel und Google Sheets:
| TapHome | Excel, Google Sheets | Beispiel |
|---|---|---|
a & b | BITAND(a, b) | 3 & 1 ergibt 1 |
a | b | BITOR(a, b) | 2 | 1 ergibt 3 |
a ^ b | BITXOR(a, b) | 6 ^ 3 ergibt 5 |
a << n | BITLSHIFT(a, n) | 8 << 2 ergibt 32 |
a >> n | BITRSHIFT(a, n) | 32 >> 2 ergibt 8 |
In Excel ist
^eine Potenz; in TapHome ist es das bitweise XOR. Für Potenzen verwenden SiePOWER.IF,AND,ORundMODbedeuten in beiden dasselbe, aber in TapHome sindANDundOROperatoren, die zwischen den Operanden stehen.
Sehen Sie sich das Beispiel für Bitoperationen in Google Sheets an: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing, oder probieren Sie das interaktive Werkzeug unter http://bitwisecmd.com/ aus. Funktionen, die einzelne Bits und Bytes lesen und schreiben, stehen auf Bitoperationen.