布林表示式(boolean expression)是一段**宣告,它最終只有true(真)和false(假)兩個取值。從最基本的層次來說,所有的布林表示式,不論它的長短如何,其值只能是true或false。
最簡單的布林表示式是等式(equality)。這種布林表示式用來測試乙個值是否與另乙個值相同。它可以是乙個簡單的等式,例如:
2 == 4
上面這個布林表示式的值是false,因為2和4不相等。它也可以是複雜的等式,如:
myobject.myproperty == yourobject.yourproperty
這個等式的值是不確定的,可能取真值也可能取假值,只有在程式執行時才能確定。如果你對c、c++甚至c#比較熟悉的話,就會知道上式中的= = (雙等號) 是乙個邏輯布林操作符,而= (單等號)是用來對變數賦值的賦值操作符。程式設計師有時會將這兩個操作符放錯位置,這是乙個導致程式在編譯時或執行時出錯的常見原因。
布林表示式的語義在於指明計算乙個邏輯值的規則。
布林表示式在程式語言中有兩個基本的作用:
一是在某些控制語句中作為實現控制轉移的條件;
另乙個則是用於計算邏輯值本身。
約定:各類運算子的優先順序(由高至低)如下:
⒈括號⒉算術運算子 *(乘法) / (除法) +(加法) -(減法) %(模)(返回乙個除法的整數餘數,例如:12%5=2,這裡是因為12除以5的餘數是2)
⒊關係運算子 <(小於)、<=(小於等於)、=(等於)、>(大於)、>=(大於等於)、<>(不等於)
⒋邏輯運算子 ┒ ∧ ∨
布林表示式的等價解釋-求值角度
為了方便起見,下面我們僅討論由文法
e→ e∧e | e∨e | ┑e | (e) | i | i rop i (5.1)
可採用類似算術表示式的方式來進行。例如,對於布林表示式a∨b∧c,可翻譯為:
(∧, b, c, t1 )
(∨, a, t1, t2 )
對於布林表示式a∨(b∧(┑c∨d)),其等價的表述是
a ?1 :(b ?((c ?0 :1)? 1 :d ):0 )
顯然,採用此種結構可產生更為有效的中間**。這裡需假定原布林表示式的計算過程中不含有任何的***。
在上式的計算中,根據a、b、c、d的取值不同,計算的結果以及運算的終止點亦不同。例如,當a=1(真)時,結果為1且終止於左邊第乙個』1』處。
這樣終止的點我們稱為該布林表示式的出口,同時,把使布林表示式取值為真的出口稱為真出口,反之稱為假出口。
對乙個布林表示式而言,它至少有乙個真出口和乙個假出口(當然可以有多個)。在用於控制流程的布林表示式e的計算中,這些出口分別指出當e值為真和假時,控制所應轉向的目標(即某一四元式的序號)。
翻譯布林表示式
翻譯布林表示式time limit 1000 ms memory limit 65536 kib problem description 大家都學過了布林表示式的翻譯,其中有乙個拉鍊 回填技術,這次我們就練習這個技術。input 多組輸入,每組輸入為一行字串,例如 a b or c d and e ...
翻譯布林表示式
time limit 1000 ms memory limit 65536 kib submit statistic problem description 大家都學過了布林表示式的翻譯,其中有乙個拉鍊 回填技術,這次我們就練習這個技術。input 多組輸入,首先輸入乙個整數t,代表資料組數。接下來...
翻譯布林表示式
problem description 大家都學過了布林表示式的翻譯,其中有乙個拉鍊 回填技術,這次我們就練習這個技術。input 多組輸入,首先輸入乙個整數t,代表資料組數。接下來每組輸入為一行字串,例如 a b or c d and e f 每個符號都用空格間隔。output 假鏈跳到 真鏈跳到...