TapHome

Operátorok

A TapHome szkriptnyelv operátorai: aritmetikai, összehasonlító, bitenkénti és logikai operátorok, a 10 precedenciaszint, az a & 1 > 0 csapda, a rövidzáras kiértékelés és az Excel megfelelők.

Az operátorok listája

A szkriptnyelvben aritmetikai, összehasonlító, bitenkénti és logikai operátorok vannak:

CsoportOperátorokPélda
Egyoperandusú- (negálás), +, ! (logikai tagadás)!IsRaining
Szorzás jellegű*, /(20.5 + 9.5) / 2 értéke 15
Összeadás jellegű+, -"T=" + Te szöveget fűz össze
Léptetés<<, >>8 << 2 értéke 32
Relációs<, <=, >, >=Te > 25
Egyenlőség= (egyenlő), <> vagy != (nem egyenlő)Mode <> 2
Bitenkénti ÉS&3 & 1 értéke 1
Bitenkénti VAGY, XOR|, ^2 | 1 értéke 3
LogikaiAND, XOR, ORTe > 25 AND Hu > 60
Értékadás:= és a +=, -=, *=, /=, <<=, >>=, &=, |=, ^= összetett alakokx += 1

Az XOR két számon bitenkénti XOR: az 5 XOR 1 értéke 4. TRUE és FALSE értékeken logikai XOR.

A nyelvben nincs NOT, ==, %, **, && és ||. Ezek helyett használd a !, =, MOD, POWER, AND és OR jelölést. Az 1 == 1 a Wrong number of literals and operators in expression, a NOT x az Unknown variable or constant 'NOT' hibával leáll.

Precedencia

Az operátorok kiértékelése ebben a sorrendben történik, a legmagasabb precedenciától a legalacsonyabbig. Az azonos szintű operátorok balról jobbra értékelődnek ki; a ( ) zárójelek felülírják a sorrendet.

  1. * /
  2. + -
  3. << >>
  4. < <= > >=
  5. = <> !=
  6. &
  7. | ^
  8. AND
  9. XOR
  10. OR

A C és a JavaScript nyelvvel ellentétben a bitenkénti operátorok erősebben kötnek, mint az AND és az OR, de gyengébben, mint az összehasonlítások. Az a & 1 > 0 jelentése a & (1 > 0). Mindig így írd: (a & 1) > 0.

VAR flags := 2;
flags & 2 > 0;
# Result: 0, read as flags & (2 > 0), which is flags & 1
(flags & 2) > 0;
# Result: TRUE

Az összetett értékadás precedenciája a műveletéé: az x -= a - b kiértékelése (x -= a) - b, az x *= 1 + 2 kiértékelése (x *= 1) + 2. A jobb oldalt tedd zárójelbe:

VAR total := 10;
total -= (a - b);

Rövidzáras kiértékelés

Az AND és az OR csak akkor értékeli ki a jobb oldalt, ha a bal oldal még nem dönti el az eredményt. Az XOR mindig mindkét oldalt kiértékeli. Egy feltétel ezért megvédheti a mellette álló kifejezést:

va2 <> 0 AND va1 / va2 > 1;
# Result: FALSE when va2 is 0, without the Division by zero error

Ha a va2 értéke 0, a jobb oldal nem értékelődik ki. Egy érték esetében ugyanezt a védelmet az IF adja, amely csak a kiválasztott ágat értékeli ki.

Excel megfelelők

A bitoperátorok a következő Excel és Google Táblázatok függvényeknek felelnek meg:

TapHomeExcel, Google TáblázatokPélda
a & bBITAND(a, b)3 & 1 értéke 1
a | bBITOR(a, b)2 | 1 értéke 3
a ^ bBITXOR(a, b)6 ^ 3 értéke 5
a << nBITLSHIFT(a, n)8 << 2 értéke 32
a >> nBITRSHIFT(a, n)32 >> 2 értéke 8

Az Excelben a ^ hatványozás; a TapHome-ban bitenkénti XOR. Hatványozáshoz használd a POWER függvényt. Az IF, az AND, az OR és a MOD mindkettőben ugyanazt jelenti, de a TapHome-ban az AND és az OR az operandusok közé írt operátor.

Nézd meg a bitműveletek példáját a Google Táblázatokban: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing, vagy próbáld ki az interaktív eszközt: http://bitwisecmd.com/. Az egyes bitek és bájtok olvasására és írására szolgáló függvények a Bitműveletek oldalon találhatók.