跳轉到內容

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:數字表達式

語言參考

華夏公益教科書