Futurebasic/语言/参考/and
外观
✔ 外观 ✔ 标准 ✔ 控制台
result& = exprA {and | &&} exprB
表达式 exprA
和表达式 exprB
各自被解释为 32 位整数。and
运算符对 exprA
中的每个位与其在 exprB
中对应位置的位进行 “按位比较”。结果是另一个 32 位量;结果中的每个位由以下方式确定
位值在 exprA | 位值在 exprB | 位值在 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。