tags: 雜~~瓦魯多~~筆記

or and orz?

若是需要兩個以上的條件判斷,那就少不了 邏輯運算 這個東東啦!
高二上數學(還是高一下?我忘ㄌ)的集合論那章,會大量用到這個觀念,那章很煩但是很好玩:)

如果已經懂基本觀念了,建議直接跳到 一些「騷操作」 這段開始看。
這裡是很有趣ㄉ地方,也是我寫這篇的目的,雖然好像實用性不大

觀念簡單介紹

閱讀本篇時,請自動把所有的 true 都帶入「條件成立」。
程式裡面的 true 就是代表「條件成立」, false 則是「條件不成立」。

A 為 true B 為 true ,則 A and B 為 true
(兩者都為 true

兩個條件做 運算的結果如下:

true false
true true false
false false false

A 為 true B 為 true ,則 A and B 為 true
(其中一個為 true

兩個條件做 運算的結果如下:

true false
true true true
false true false

c++ 中的 且 與 或

C++ 中的條件判斷,也時常用到

且 與 或 的寫法

有兩種寫法,直接寫作 and 或是 &&

bool A, B; //兩個條件 if (A && B){ //... } if (A and B){ //... }

也一樣,可直接寫作 or 或是 ||

bool A, B; //兩個條件 if (A || B){ //... } if (A or B){ //... }

一些「騷操作」

C++ 在 and 與 or 判斷時的小作弊

理論上在做 andor 時,兩個條件都要判斷嘛……不,這可不一定喔?

  • and

    and 運算時, A and B 成立的條件是 AB 都為 true
    換句話說,只要 AB 其中一個不是 true ,那 A and B 就一定不會是 true

    C++ 在接收到 A and B 這條判斷式時,它會先判斷 Atrue 還是 false

    -> 如果 AfalseA and B 就絕對不會是 true
    那後面的 B 就會被跳過不執行,A and B 直接得到結果為 false

    -> 如果 Atrue ,那後面的 B 就會照常執行。

  • or

    or 的情況, A or B 成立的條件是 AB 至少其中一個為 true
    換句話說,只要 AB 其中一個是 true ,那 A and B 就一定是 true

    C++ 在接收到 A or B 這條判斷式時,它會先判斷 A 是否為 true 還是 false

    -> 如果 AtrueA or B 就一定是 true
    那後面的 B 就會被直接跳過不執行,A or B 直接得到結果為 true

    -> 如果 Afalse ,那後面的 B 就會照常執行。

簡單來說, A and BA or B 進行判斷時,會適當地跳過 B 的判斷,以此減少工作量。

那麼,可以利用這個小特性做什麼呢?

把以上的綜合應用

這東西超有趣,建議各位看個324遍,印出來放床邊:)

這裡就留給各位自行慢慢享受了:

#include <iostream> using namespace std; int main(){ int a = 0; (cin>>a) && (cout<<a); (a==0) && (cout<<"Yaaaaa I luv AND\n"); (a!=0) && (cout<<"Nope AND would skip me"); (a!=0) || (cout<<"OR is da best"); (a==0) || (cout<<"Dope it's ignoring me"); }

輸入如下:

0

輸出如下:

0
Yaaaaa I luv AND
OR is da best 

也可以試試輸入 0 以外的數字觀察看看喔。

真的看不懂的話點這裡ㄅ

前面提過,andor 會適當地跳過後面的條件「不執行」。

所以如果在後面的位置放一個 cout ,那它也會遵循這套規則,被第一個條件影響是否執行。

int a = 0; (cin>>a) || (cout<<a); //輸入 0 時 cin 即等於 true (就像是丟進 while 迴圈那種方式判斷) //(cin>>a) 為 true,因此後面的 cout 照常執行 (a==0) && (cout<<"Yaaaaa I luv AND\n"); //(a==0) 為 true,因此後面的 cout 照常執行 (a!=0) && (cout<<"Nope AND would skip me"); //(a!=0) 為 false,此 and 必為 false,因此後面的 cout 被跳過 (a!=0) || (cout<<"OR is da best"); //(a!=0) 為 false,因此後面的 cout 照常執行 (a==0) || (cout<<"Dope it's ignoring me"); //(a==0) 為 true,此 or 必為 true,因此後面的 cout 被跳過

小結

嘛,說真的這篇又是一篇冷知識向的筆記了。
所以看不懂也沒關係,不了解 andor 的細部機制也不會影響一般日常使用。

不過 and 與 or 的基礎運用還是要盡量練習到熟悉,畢竟邏輯運算在條件判斷可說是不可或缺的。

所以你各位要多練題啊拜託ㄌ!!!!!(跪地哭