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。