Futurebasic/语言/参考/and
外观
✔ 外观 ✔ 标准 ✔ 控制台
result& = exprA {and | &&} exprB
表达式 exprA
和表达式 exprB
都被解释为 32 位整数。and
运算符对 exprA
中的每个位与 exprB
中对应位置的位进行“按位比较”。结果是另一个 32 位值;结果中的每个位如下确定
exprA 中的位值 exprA | exprA 中的位值 exprB | exprA 中的位值 result& |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
在下面的示例中,表达式在做出分支决策之前被评估为真或假。逻辑表达式 time>7
为真,因此被评估为 -1。表达式 time<8.5
为假,因此被评估为 0。然后执行按位比较 (-1) and
(0),结果为零。最后,long if
语句将此零结果解释为“假”,因此跳过第一个 print
语句。
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
下面的示例展示了如何使用 AND
操作位。
defstr long print bin$( 923 ) print bin$( 123 ) print "--------------------------------" print bin$( 923 and 123 )
程序输出
00000000000000000000001110011011 00000000000000000000000001111011 -------------------------------- 00000000000000000000000000011011
在诸如 if expr1 and expr2 then...
的语句中,即使每个单独的 expr
被评估为真,“expr1 and expr2
” 也有可能为假。考虑以下示例
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
程序输出
Joe's here Fred's here They're NOT both here!
这个奇怪的结果发生是因为表达式 “16 and 2
” 被评估为 0,然后被 long if
语句解释为“假”。如果我们将 JoeIsHere
设置为 -1 并且 FredIsHere
设置为 -1,则不会发生这种情况,因为表达式 “-1 and -1
” 被评估为 -1。