TapHome

Operátory

Operátory skriptovacího jazyka TapHome: aritmetické, porovnávací, bitové a logické operátory, jejich 10 úrovní priority, past a & 1 > 0, zkrácené vyhodnocení a ekvivalenty v Excelu.

Seznam operátorů

Skriptovací jazyk má aritmetické, porovnávací, bitové a logické operátory:

SkupinaOperátoryPříklad
Unární- (záporné znaménko), +, ! (logická negace)!IsRaining
Násobení a dělení*, /(20.5 + 9.5) / 2 je 15
Sčítání a odčítání+, -"T=" + Te spojí text
Posun<<, >>8 << 2 je 32
Relační<, <=, >, >=Te > 25
Rovnost= (rovná se), <> nebo != (nerovná se)Mode <> 2
Bitové AND&3 & 1 je 1
Bitové OR, XOR|, ^2 | 1 je 3
LogickéAND, XOR, ORTe > 25 AND Hu > 60
Přiřazení:= a složené tvary +=, -=, *=, /=, <<=, >>=, &=, |=, ^=x += 1

XOR nad dvěma čísly je bitový XOR: 5 XOR 1 je 4. Nad TRUE a FALSE je to logický XOR.

Jazyk nemá NOT, ==, %, **, && ani ||. Použijte !, =, MOD, POWER, AND a OR. 1 == 1 skončí chybou Wrong number of literals and operators in expression, NOT x chybou Unknown variable or constant 'NOT'.

Priorita

Operátory se vyhodnocují v tomto pořadí, od nejvyšší priority po nejnižší. Operátory stejné úrovně se vyhodnocují zleva doprava; závorky ( ) pořadí mění.

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

Na rozdíl od C nebo JavaScriptu váží bitové operátory těsněji než AND a OR, ale volněji než porovnání. a & 1 > 0 znamená a & (1 > 0). Vždy pište (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

Složené přiřazení má prioritu své operace: x -= a - b se vyhodnotí jako (x -= a) - b a x *= 1 + 2 jako (x *= 1) + 2. Pravou stranu dejte do závorek:

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

Zkrácené vyhodnocení

AND a OR vyhodnotí pravou stranu, jen když levá strana ještě nerozhodla o výsledku. XOR vyhodnotí vždy obě strany. Podmínka tak může chránit výraz vedle sebe:

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

Když je va2 rovno 0, pravá strana se nevyhodnotí. Stejnou ochranu pro hodnotu poskytuje IF, které vyhodnotí jen vybranou větev.

Ekvivalenty v Excelu

Bitové operátory odpovídají těmto funkcím Excelu a Google Sheets:

TapHomeExcel, Google SheetsPříklad
a & bBITAND(a, b)3 & 1 je 1
a | bBITOR(a, b)2 | 1 je 3
a ^ bBITXOR(a, b)6 ^ 3 je 5
a << nBITLSHIFT(a, n)8 << 2 je 32
a >> nBITRSHIFT(a, n)32 >> 2 je 8

V Excelu je ^ mocnina; v TapHome je to bitový XOR. Pro mocniny použijte POWER. IF, AND, OR a MOD mají v obou stejný význam, v TapHome jsou ale AND a OR operátory zapsané mezi operandy.

Příklad bitových operací v Google Sheets: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing, nebo vyzkoušejte interaktivní nástroj na http://bitwisecmd.com/. Funkce, které čtou a zapisují jednotlivé bity a bajty, jsou na stránce Bitové operace.