Operatori ed espressioni

Le espressioni eseguono azioni specifiche, in base a un operatore, con uno o due operandi. Un operando può essere una costante, una variabile o il risultato di una funzione. Gli operatori sono aritmetici, logici e relazionali. Come avviene in C, alcuni operatori variano nella funzionalità a seconda del tipo di dati degli operandi, specificato nell'espressione.

Operatori aritmetici ( +, -, *, /, **, % )
Gli operatori aritmetici eseguono delle operazioni matematiche come l'addizione e la sottrazione con gli operandi. Esistono due tipi di operatori matematici: unari e binari. Gli operatori unari eseguono un'azione con un singolo operando. Gli operatori binari eseguono le azioni con due operandi. In un'espressione complessa, (due o più operandi), l'ordine della valutazione dipende dalle regole di precedenza.
Operatori aritmetici unari
Gli operatori unari sono operatori aritmetici che eseguono un azione su un singolo operando. Il linguaggio di script riconosce l'operatore unario negativo (-).

L'operatore unario negativo inverte il segno di un'espressione da positivo a negativo o viceversa. L'effetto che si ottiene è la moltiplicazione del numero per -1. Esempio:

a = -10;

Gli operatori prefisso incrementano o decrementano la variabile prima di eliminare il riferimento all'oggetto, mentre gli operatori suffisso incrementano o decrementano la variabile una volta creato il relativo riferimento. Esempio:

A=1; 
B = a++; // b è uguale a 1, a è uguale a 2; 
A = 1; 
B = ++a; // b è uguale a 2, a è uguale a 2; 
A= 1; 
B = a--; // b è uguale a 1, a è uguale a 0;
Operatori aritmetici binari
Inserire uno spazio prima e dopo un operatore aritmetico. Gli operatori aritmetici binari supportati sono elencati qui di seguito.
Tabella 1. Operatori aritmetici binari
Simbolo Operazione Esempio Descrizione
+ Addizione a + b Sommare i due operandi
- Sottrazione a - b Sottrarre il secondo operando dal primo operando
* Moltiplicazione a * b Moltiplicare i due operandi
/ Divisione a / b Dividere il primo operando per il secondo operando
** Elevamento a potenza a ** b Eleva il primo operando alla potenza rappresentata dal secondo
%

Modulo

a % b

Dividere il primo operando per il secondo operando e ottenere la parte restante
Precedenza degli operatori
Le espressioni vengono di norma valutate da sinistra a destra. Le espressioni complesse vengono calcolate una alla volta. L'ordine in cui le espressioni vengono calcolate è determinato dalla precedenza degli operatori utilizzati. Viene seguito l'ordine C standard.
  1. unario di negazione (-)
  2. potenza
  3. Moltiplicazione, divisione e modulo
  4. addizione e sottrazione

Se un'espressione contiene due o più operatori con la stessa precedenza, l'operatore a sinistra viene valutato per primo. Ad esempio, 10 / 2 * 5 verrà valutato come (10 / 2) e il risultato verrà moltiplicato per 5.

Per fare in modo che un'operazione inferiore di precedenza venga elaborata per prima, è necessario racchiuderla tra parentesi. Ad esempio: 30 / 2 + 8. Tale operazione viene normalmente valutata come 30 diviso 2 e al risultato viene quindi aggiunto 8. Se si desidera dividere per la somma di 2 + 8, è necessario scrivere 30 / (2 + 8).

Le parentesi possono essere nidificate all'interno delle espressioni. Le espressioni tra parentesi più interne vengono valutate per prime.

Operatore di assegnazione (= )
Utilizzare l'operatore di assegnazione (=) per copiare il risultato di un'espressione di variabili, di valori letterali, di costanti o il risultato di una funzione su una variabile. Il linguaggio di script non supporta le assegnazioni multiple in una singola istruzione (come a=b=c=0). La lunghezza delle stringhe viene definita in base alla dimensione della stringa assegnata alla variabile e può cambiare dinamicamente durante il runtime.
Operatori logici (AND, OR)
Gli operatori logici consentono di combinare più verifiche relazionali in un confronto. Gli operatori logici restituiscono un valore TRUE (1) o FALSE (0). Gli operatori logici hanno una precedenza inferiore rispetto agli operatori aritmetici.
Tabella 2. Operatori logici
Simbolo Operazione Esempio Descrizione
AND &&

E

Expr1 $$ expr2

True se sia expr1 che expr2 sono True.

OR ||

OR

Expr1 OR expr2

True se expr1 o expr2 è True.

Operatori relazionali
Gli operatori relazionali sono i seguenti:
Tabella 3. Operatori relazionali
Simbolo Operazione Esempio Descrizione
< Minore di a < b True se a è minore di b.
> Maggiore di a GT b True se a è maggiore di b.
== Uguale a a == b True se a è uguale a b.
!= Non uguale a a NE b True se a non è uguale a b.
<= Minore di o uguale a a <= b True se a è minore di o uguale a b.
>= Maggiore di o uguale a a GE b True se a è maggiore di o uguale a b.

I confronti devono essere eseguiti tra tipi di dati simili—stringa con stringa, numeri con numeri. Se i tipi di dati sono differenti, verrà generato un errore di runtime.

Confronti tra stringhe
Due stringhe vengono considerate uguali se presentano una corrispondenza di tutti i caratteri e la stessa lunghezza. Le stringhe vengono confrontate carattere per carattere, da sinistra a destra finché non si stabilisce una corrispondenza di tutti i caratteri o non si giunge alla fine di una delle stringhe. Se la fine di una stringa viene individuata prima della fine della stringa corrispondente, le stringhe vengono considerate di lunghezza non uguale e danno come risultato una condizione di non uguale.

Se un qualsiasi carattere in una stringa non equivale a quello corrispondente nell'altra stringa, il confronto si arresta e le stringhe non vengono considerate uguali. Le stringhe sono sensibili al maiuscolo/minuscolo. Esempi:

Str1 = "abcdefg"; 
Str2 = "abcdefg"; 
Str3 = "abcdef"; 
Str4 = "ABCDEFG"; 
If (str1 == str2)... dà come risultato condizioni di uguaglianza/true 
If (str1 == str3).... Dà come risultato una condizione di non uguaglianza poiché str3 è più corto
di str1 If (str1 == str4)  ... Dà come risultato una condizione di non uguaglianza poiché
le stringhe presentano una differente combinazione di maiuscole/minuscole;
Operatore di concatenazione stringhe (+)
L'operatore Più(+), quando viene applicato alle stringhe, dà come risultato la concatenazione delle due stringhe. Esempio:
Str1 = "abc"; 
Str2 = "def"; 
Str3 = str1 + str2; dà come risultato "abcdef"