跳转到内容

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。

nand; nor; not; xor; or; 附录 D:数字表达式

语言参考

华夏公益教科书