FutureBasic Logo

<<    Index    >> FutureBasic 5

or   operator



Syntax:
result& = exprA {or | ||} exprB

Description:
Expression exprA and expression exprB are each interpreted as 32-bit integer quantities. The or operator performs a "bitwise comparison" of each bit in exprA with the bit in the corresponding position in exprB. The result is another 32-bit quantity; each bit in the result is determined as follows:

Bit Value in exprBit Value in exprBit Value in expr
000
101
011
111

The or operator can also be used to join two "condition clauses" for use in statements like if, while and until. For example:
  if n > 17 or myName$ = "Smith" then beep
This statement produces a beep if either n > 17 is true, or myName$="Smith" is true, or both.
Even when it's used to join condition clauses, the or operator still does a "bitwise comparison." This happens because FutureBasic actually assigns a numeric value to every condition clause, depending on whether the clause is true or false. for example, the clause n>17 is evaluated as -1 if it's true, or as 0 if it's false. Conversely, any numeric expression is judged as "true" if it's non-zero, or as "false" if it's zero.

Example:
In the following example, expressions are evaluated as true or false before a decision is made for branching. The logical expression state$="IL"is true, and therefore evaluated as -1. The expression state$="CA" is false, and is therefore evaluated as 0. Then the bitwise comparison (-1)or(0) is performed, resulting in -1. Finally, the long if statement interprets this -1 result as meaning "true," and therefore executes the first print statement.
state$ = "IL"
long if state$ = "IL" or state$ = "CA"
   print "Okay"
xelse
   print "Invalid state"
end if

The example below shows how bits are manipulated with or:
defstr long
print bin$(923)
print bin$(123)
print "--------------------------------"
print bin$(923 or 123)

program output:
00000000000000000000001110011011
00000000000000000000000001111011
--------------------------------
00000000000000000000001111111011


See Also:
not; and; xor; Appendix D - Numeric Expressions