Futurebasic/Language/Reference/and

And

Operator

✔ Appearance ✔ Standard ✔ Console

Syntax

```result& = exprA {and | &&} exprB
```

Description

Expression `exprA` and expression `exprB` are each interpreted as 32-bit integer quantities. The `and` 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
exprA
Bit value in
exprB
Bit value in
result&
0 0 0
1 0 0
0 1 0
1 1 1

Example

In the following example, expressions are evaluated as true or false before a decision is made for branching. The logical expression `time>7` is true, and is therefore evaluated as -1. The expression `time<8.5` is false, and is therefore evaluated as 0. Then the bitwise comparison (-1) `and` (0) is performed, resulting in zero. Finally, the `long if` statement interprets this zero result as meaning "false," and therefore skips the first `print` statement.

```time = 9.5
long if time > 7 and time < 8.5
print "It is time for breakfast!"
xelse
print "We have to wait 'til noon to eat!"
end if
```

The example below shows how bits are manipulated with `AND`:

```defstr long
print bin\$( 923 )
print bin\$( 123 )
print "--------------------------------"
print bin\$( 923 and 123 )
```

program output:

```00000000000000000000001110011011
00000000000000000000000001111011
--------------------------------
00000000000000000000000000011011
```

Notes

In a statement like `if expr1 and expr2 then...`, it is possible for "`expr1 and expr2`" to be false even though each individual `expr` is evaluated as true. Consider this example:

```JoeIsHere = 16
FredIsHere = 2
if JoeIsHere then print "Joe's here" else print "Joe's gone"
if FredIsHere then print "Fred's here"¬
else print "Fred's gone"
long if JoeIsHere and FredIsHere
print "They're both here"
xelse
print "They're NOT both here!"
end if
```

program output:

```Joe's here
Fred's here
They're NOT both here!
```

This strange result happens because the expression "`16 and 2`" evaluates to 0, which is then interpreted as "false" by the `long if` statement. This wouldn't have happened if we had set `JoeIsHere` to -1 and `FredIsHere` to -1, because the expression "`-1 and -1`" evaluates to -1.

`nand; nor; not; xor; or;` Appendix D: Numeric Expressions