布林表示式

2021-10-03 18:38:54 字數 1357 閱讀 2118

布林表示式(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 假鏈跳到 真鏈跳到...