TapHome

Operatori

Operatori del linguaggio di script TapHome: operatori aritmetici, di confronto, bit a bit e logici, i loro 10 livelli di precedenza, la trappola a & 1 > 0, la valutazione a corto circuito e gli equivalenti in Excel.

Elenco degli operatori

Il linguaggio di script ha operatori aritmetici, di confronto, bit a bit e logici:

GruppoOperatoriEsempio
Unari- (negazione), +, ! (NOT logico)!IsRaining
Moltiplicativi*, /(20.5 + 9.5) / 2 è 15
Additivi+, -"T=" + Te unisce testo
Scorrimento<<, >>8 << 2 è 32
Relazionali<, <=, >, >=Te > 25
Uguaglianza= (uguale), <> o != (diverso)Mode <> 2
AND bit a bit&3 & 1 è 1
OR, XOR bit a bit|, ^2 | 1 è 3
LogiciAND, XOR, ORTe > 25 AND Hu > 60
Assegnazione:= e le forme composte +=, -=, *=, /=, <<=, >>=, &=, |=, ^=x += 1

XOR su due numeri è uno XOR bit a bit: 5 XOR 1 è 4. Su TRUE e FALSE è lo XOR logico.

Il linguaggio non ha NOT, ==, %, **, && né ||. Usa !, =, MOD, POWER, AND e OR. 1 == 1 fallisce con Wrong number of literals and operators in expression, NOT x con Unknown variable or constant 'NOT'.

Precedenza

Gli operatori vengono valutati in questo ordine, dalla precedenza più alta alla più bassa. Gli operatori dello stesso livello vengono valutati da sinistra a destra; le parentesi ( ) modificano l’ordine.

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

A differenza di C o JavaScript, gli operatori bit a bit legano più strettamente di AND e OR, ma meno dei confronti. a & 1 > 0 significa a & (1 > 0). Scrivi sempre (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

Un’assegnazione composta ha la precedenza della sua operazione: x -= a - b viene valutato come (x -= a) - b e x *= 1 + 2 come (x *= 1) + 2. Metti il lato destro tra parentesi:

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

Valutazione a corto circuito

AND e OR valutano il lato destro solo quando il lato sinistro non decide ancora il risultato. XOR valuta sempre entrambi i lati. Una condizione può quindi proteggere l’espressione accanto:

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

Il lato destro non viene valutato quando va2 è 0. La stessa protezione per un valore è IF, che valuta solo il ramo selezionato.

Equivalenti in Excel

Gli operatori sui bit corrispondono a queste funzioni di Excel e Google Sheets:

TapHomeExcel, Google SheetsEsempio
a & bBITAND(a, b)3 & 1 è 1
a | bBITOR(a, b)2 | 1 è 3
a ^ bBITXOR(a, b)6 ^ 3 è 5
a << nBITLSHIFT(a, n)8 << 2 è 32
a >> nBITRSHIFT(a, n)32 >> 2 è 8

In Excel ^ è una potenza; in TapHome è lo XOR bit a bit. Per le potenze usa POWER. IF, AND, OR e MOD hanno lo stesso significato in entrambi, ma in TapHome AND e OR sono operatori posti tra gli operandi.

Guarda l’esempio di operazioni sui bit in Google Sheets: https://docs.google.com/spreadsheets/d/1hF5FMpGMJbgYh-YLwWrq2n186_ATyGyLUb689__IhLY/edit?usp=sharing, oppure prova lo strumento interattivo su http://bitwisecmd.com/. Le funzioni che leggono e scrivono singoli bit e byte sono nella pagina Operazioni sui bit.