Operatory
Operatory języka skryptowego TapHome: arytmetyczne, porównania, bitowe i logiczne, ich 10 poziomów priorytetu, pułapka a & 1 > 0, skrócone obliczanie i odpowiedniki w Excelu.
Lista operatorów
Język skryptowy ma operatory arytmetyczne, porównania, bitowe i logiczne:
| Grupa | Operatory | Przykład |
|---|---|---|
| Jednoargumentowe | - (negacja), +, ! (logiczne NOT) | !IsRaining |
| Multiplikatywne | *, / | (20.5 + 9.5) / 2 daje 15 |
| Addytywne | +, - | "T=" + Te łączy tekst |
| Przesunięcia | <<, >> | 8 << 2 daje 32 |
| Relacyjne | <, <=, >, >= | Te > 25 |
| Równości | = (równe), <> lub != (różne) | Mode <> 2 |
| Bitowe AND | & | 3 & 1 daje 1 |
| Bitowe OR, XOR | |, ^ | 2 | 1 daje 3 |
| Logiczne | AND, XOR, OR | Te > 25 AND Hu > 60 |
| Przypisania | := i formy złożone +=, -=, *=, /=, <<=, >>=, &=, |=, ^= | x += 1 |
XOR na dwóch liczbach to bitowy XOR: 5 XOR 1 daje 4. Na TRUE i FALSE to logiczny XOR.
Język nie ma NOT, ==, %, **, && ani ||. Użyj !, =, MOD, POWER, AND i OR. 1 == 1 kończy się błędem Wrong number of literals and operators in expression, NOT x błędem Unknown variable or constant 'NOT'.
Priorytet
Operatory są obliczane w tej kolejności, od najwyższego priorytetu do najniższego. Operatory tego samego poziomu są obliczane od lewej do prawej; nawiasy ( ) zmieniają kolejność.
*/+-<<>><<=>>==<>!=&|^ANDXOROR
Inaczej niż w C czy JavaScripcie operatory bitowe wiążą silniej niż
ANDiOR, ale słabiej niż porównania.a & 1 > 0oznaczaa & (1 > 0). Zawsze pisz(a & 1) > 0.
VAR flags := 2;
flags & 2 > 0;
# Result: 0, read as flags & (2 > 0), which is flags & 1
(flags & 2) > 0;
# Result: TRUEPrzypisanie złożone ma priorytet swojej operacji: x -= a - b jest obliczane jako (x -= a) - b, a x *= 1 + 2 jako (x *= 1) + 2. Prawą stronę ujmij w nawiasy:
VAR total := 10;
total -= (a - b);Skrócone obliczanie
AND i OR obliczają prawą stronę tylko wtedy, gdy lewa strona jeszcze nie przesądza o wyniku. XOR zawsze oblicza obie strony. Warunek może więc chronić wyrażenie obok siebie:
va2 <> 0 AND va1 / va2 > 1;
# Result: FALSE when va2 is 0, without the Division by zero errorPrawa strona nie jest obliczana, gdy va2 jest 0. Taką samą ochronę dla wartości daje IF, które oblicza tylko wybraną gałąź.
Odpowiedniki w Excelu
Operatory bitowe odpowiadają tym funkcjom w Excelu i Arkuszach Google:
| TapHome | Excel, Arkusze Google | Przykład |
|---|---|---|
a & b | BITAND(a, b) | 3 & 1 daje 1 |
a | b | BITOR(a, b) | 2 | 1 daje 3 |
a ^ b | BITXOR(a, b) | 6 ^ 3 daje 5 |
a << n | BITLSHIFT(a, n) | 8 << 2 daje 32 |
a >> n | BITRSHIFT(a, n) | 32 >> 2 daje 8 |
W Excelu
^oznacza potęgę; w TapHome to bitowy XOR. Do potęg użyjPOWER.IF,AND,ORiMODmają w obu to samo znaczenie, ale w TapHomeANDiORsą operatorami stawianymi między operandami.
Zobacz przykład operacji bitowych w Arkuszach Google: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing albo wypróbuj interaktywne narzędzie http://bitwisecmd.com/. Funkcje odczytujące i zapisujące pojedyncze bity i bajty są na stronie Operacje bitowe.