Indice

ugBASIC Manuale Utente

OR

SINTASSI

   = x OR y

SCOPO

Esegue una disgiunzione logica su due espressioni, come disgiunzione bit a bit. Per i confronti gestiti come risultato booleano (TRUE o FALSE), result è TRUE se solo una espressione viene valutata come TRUE. La seguente tabella mostra come viene determinato il risultato:

'TRUE OR TRUE = TRUE' 'TRUE OR FALSE = TRUE' 'FALSE OR TRUE = TRUE' 'FALSE OR FALSE = FALSE'

In generale, l'operatore OR esegue un confronto bit a bit dei bit di due espressioni numeriche e imposta il bit corrispondente in result in base alla tabella precedente.

Nota che ugBASIC utilizza la convenzione, molto comune nei BASIC degli anni '70 e '80, di considerare la logica booleana come implementata tramite il cosiddetto “complemento a due”.

In altre parole, il valore FALSE è associato a un numero composto da tutti 0, in termini di bit. Il valore TRUE è, invece, associato a un numero composto da tutti 1, sempre in termini di bit.

Secondo la rappresentazione del complemento a 2, un numero composto da tutti 1 è sempre equivalente al numero -1, indipendentemente dal numero di bit di cui è composto, mentre un numero composto da tutti 0 è sempre equivalente a zero.

Secondo questa convenzione, c'è una coincidenza tra operazioni bit a bit e logiche: infatti, un OR bit a bit, applicato a tutti i bit del numero, sarà equivalente all'operazione logica. Nota che l'operatore OR valuta sempre entrambe le espressioni, il che può includere l'esecuzione di chiamate di routine.

Poiché gli operatori logici e bitwise hanno una precedenza inferiore rispetto ad altri operatori aritmetici e relazionali, tutte le operazioni bitwise devono essere racchiuse tra parentesi per garantire risultati accurati.

Se gli operandi sono costituiti da un'espressione SIGNED BYTE e da un'espressione numerica, converte l'espressione SIGNED BYTE in un valore numerico (-1 per TRUE e 0 per FALSE) ed esegue un'operazione bitwise. Quindi, il tipo di dati del risultato è un tipo numerico appropriato per i tipi di dati di entrambe le espressioni.

ESEMPIO

  IF x OR 1 THEN: PRINT "always executed" : ELSE : PRINT "never executed": ENDIF

DISPONIBILE SU

PROBLEMI?

Se si riscontra un problema nell'utilizzare questo comando, se si ritiene che vi sia un bug oppure che la spiegazione sia poco chiara, è possibile aprire una segnalazione per questa parola chiave su GitHub. Grazie!

POWERED BY