啥叫 短路邏輯

2021-08-25 19:40:09 字數 2058 閱讀 3512

if a and b:#如果a是false,那麼跳過b的判斷,結果直接false

if a or b:#如果a為true,那麼跳過b的判斷,直接true

not or and 的優先順序是不同的:not > and > or

比如:3 and 4 == 4,而 3 or 4 == 3

一休:愚公,我又碰到問題了,請看下面一段**:

double

value=0;

if(value!=0 && 1/value

<1000)

else

把這段**放入main方法中,執行結果是:

the value

is too small

按道理說應該會出現除數為0的錯誤,為什麼沒有出現呢?

愚公:需要注意,這裡的條件邏輯操作符」&&」是」短路」操作符,而」value!=0「條件不成立,即短路了,應執行else後的語句,所以不會再判斷1/value<1000了。我再編寫幾條語句給你看看:

public

static

void

main(string args)

system.out.println("int2="+int2);

if(int1!=0 && (int3=2)==1)

system.out.println("int3="+int3);

}

讀一下這段**,看看執行結果是什麼呢?

一休:還真的有點難讀呢!

愚公:把你聰明的大腦當成計算機,一步步執行看看。

一休:哦,首先是一組賦值」int1=0,int2=1,int3=1;」,然後條件判斷」value!=0「,現在int1等於0,於是碰到」&」號。

愚公:碰到」&」號要繼續判斷後面的表示式。

一休:然後執行int2=2,它的值就變成了2,再判斷int2==1,兩個條件都不滿足,所以不執行」system.out.println(「這裡沒有執行」);「語句。

愚公:那麼system.out.println(「int2=」+int2)輸出什麼呢?

一休:是」int2=2.0「

愚公:再看看語句if(int1!=0 && (int3=2)==1)。

一休:」int1!=0」不滿足,那麼」&&」後面的條件就不用考慮了。」(int3=2)」沒有執行,所以,system.out.println(「int3=」+int3)輸出」int3=1.0「。

愚公:對了。

一休:那」||」也是如此吧?

愚公:是的,現在總結一下。

邏輯操作符有:&(與運算)、^(異或運算)、|(或運算)

短路邏輯操作符有:&&(並且)、||(或者)

短路與(或)運算子和邏輯與(或)一樣,都可以實現邏輯運算,但是有乙個重要的區別:

利用邏輯與(或)運算時,不管操作符兩邊的條件表示式成不成立,它都要進行運算判斷;

而短路與(或)運算就不一樣了,如果通過左側的運算元就可以進行它們需要的判斷,那麼它就不會再計算右側的運算元了。

一休:這下我全明白了。

例程:

print(not1or

0and1or

3and4or

5and6or

7and

8and

9)

我們按照優先順序可以加上括號:

(not

1) or (0

and1) or (3

and4) or (5

and6) or (7

and8

and9)

#== 0or0

or4or6

or9 

#== 4

啥叫高質量的bugfix

這段時間一直在修bug。自己的bug沒fix幾個,天天給人分析bug。但是聽的最多的就是 你們的bugfix質量太低啊,要保證質量啊。於是今天我就在想,啥叫高質量的bugfix呢?產生的side effect越少越好?改動越小越好?風險越小越好?思考後,心得如下 其一 試想,如果你碰到乙個bug,這...

python短路邏輯 Python支援短路嗎?

運算元的短路行為and,or 讓我們首先定義乙個有用的函式,以確定是否執行了某項操作。乙個簡單的函式,它接受乙個引數,列印一條訊息並返回輸入,沒有變化。def fun i print executed return i 我們可以觀察到python的短路行為的and,or以下示例中的運算子 fun 1...

java中短路與 邏輯與 短路或 邏輯或

created by cxh on 17 07 21.幾個名詞的定義和它們之間的區別 短路與 eg 條件1 條件2 執行過程 如果條件1成立,則繼續計算條件2 如果條件1不成立,則條件2不再計算,直接返回false.邏輯與 eg 條件1 條件2 執行過程 如果條件1成立,條件2繼續計算 如果條件1不...