1. 程式人生 > 實用技巧 >C++基礎:邏輯運算子與邏輯表示式

C++基礎:邏輯運算子與邏輯表示式

前言

內容純屬原創,如有雷同,純屬巧合!

如轉載請註明出處!

參考練習

無具體練習題,多練練條件分支型別的語句(比如if、while等)

當然你可以去看第五條,第五條裡有自編的練習

一、邏輯運算子和邏輯表示式的意思與意義

邏輯運算子,就是與+-*/類似的運算子號

邏輯表示式,就是帶有邏輯運算子的表示式

邏輯表示式的意義,其實就是做比較、判斷之類的,比如 4>5並且5>4 這是不可能的,

所以說邏輯表示式就是為了求出這個式子、判斷、比較等是不是正確的

邏輯運算子的存在就是為了拼湊出邏輯表示式

二、true與false,1與0(if的講解)

會的DALAO們請自行跳過

在C++中,如果你想要看一個數是否與你想的一樣,那麼就需要用到if了

if的意思就是判斷,他的用法就是

if(條件a){
    成立,那麼怎麼怎麼著
}
不成立,跳過裡面的內容,從這裡往下繼續執行

那麼我們可以清楚的看到

如果條件a成立,那麼就進入括號裡面的內容,然後再到括號外面的內容

如果條件a不成立,那麼直接進入括號外面的內容

那我們來嘗試嘗試

if(2>1){
    cout<<"2>1"<<endl;
}
cout<<"2<1"<<endl;

那麼你覺得它輸出的是什麼呢

它輸出的是:

2>1

2<1

那麼我們如果不想讓他輸出2<1呢?

這就要用到else語句了

else語句的用法是:

if(條件a){
    成立,那麼怎麼怎麼著
}
else
{
    如果if的語句不成立,那麼怎麼怎麼著
}
然後怎麼怎麼著

注意,else語句的使用,必須要有前置的if或者else if語句才能使用

else if語句我後面會講

如果if裡的不成立,那麼進入else括號裡面的

最後到括號外面的

如果if成立就進入if括號裡面的,然後到括號外面的

else語句連線的是離自己最近的if語句或者else if語句,比如

if(條件1){
    條件1成立要做的事情
}
if(條件2){
    條件2成立要做的事情
}
else
{
    條件2不成立要做的事情
}

這樣,才是else的連線方式

但是如果我想讓條件1成立後不再檢測條件2,但是如果條件1不成立要檢測條件2,如果條件1和2都不成立就進入else,我該怎麼寫呢?

好的,else if語句來了

if(條件1){
    條件1成立要做的事情
}
else if(條件2){
    條件2成立要做的事情
}
else
{
    條件2不成立要做的事情
}

這樣就成功了

else if只能連線if語句,但後面可以連線其他的else if或者else,else if可以連線無數個,但後面的else只能連線1個

else if的用法是

if(條件a){
    成立,那麼怎麼怎麼著
}
else if(條件b)
{
    成立,那麼怎麼怎麼著
}
然後怎麼怎麼著

如果前面的if成立的話,走完if括號裡的就直接走外面的了

但如果if不成立,就判斷else if

else if成立的話,就執行else if括號裡的,然後執行括號外面的

else if不成立的話,就執行括號外的

對於條件分支,就這三種,但後面的邏輯運算子和邏輯表示式講的是條件的問題

我們先把if、else、else if的意思理清一下

學過這些單詞的肯定都知道

if是如果

else是或者

else if就是或者如果了

那麼條件分支講到這裡,我們講一下條件

條件有兩種形態,一是成立,二是不成立

成立在C++以及部分語言裡,他可以被代表為true,也可以代表為1

不成立可以被代表為false或者0

true和false大家可能能理解,但是可能不理解為什麼是0和1

0和1呢出自二進位制,0就是沒有,1就是有

比如二進位制的10

1是有,0是沒有

那麼這個數的十進位制是3

但如果是11

兩個有

這個數的十進位制是4

等等等等

這裡我不細講

總之,在C++中,除了0以外的數都等於true(負數我不確定,但正數我絕對確定,比如if(1)就是true)

當然,如果你想儲存true或者false的話,可以用bool型別儲存

三、認識邏輯運算子及其用處

邏輯運算子分為三種

1.&&

2.||

3.!

我們這裡挨個講

1.&&

&&又稱邏輯與,其實你想他的意思的時候只要把“邏輯”二字去掉就行了

他的用處是什麼呢?

比如我們正常寫的時候

不用邏輯與運算子是這樣的

if(a>b){
    if(b>c){
        cout<<"a>c";
    }
}

是不是很麻煩呢,因為要寫兩個if

但是我們加上邏輯與運算子

if(a>b&&b>c){
    cout<<"a>c";
}

當然我們再進一步拓展,把大括號去掉,就成了這樣

if(a>b&&b>c)cout<<"a>c";

是不是完全不一樣了呢?

邏輯與,也就是&&的意義就是,當條件a與條件b同時正確時,那麼就返回true

這裡的“與”字需要重讀

這樣可以讓你更加清楚的明白邏輯與的意思

2.||

||又稱邏輯或,怎麼樣,是不是瞬間懂了呢?

或嘛,也就是說條件a或條件b成立,那麼返回true

“或”也要重讀

當然,如果兩個都成立,也返回true

比如這樣

if(a>b||a<b)cout<<"a不等於b";

是不是又雙叒叕瞬間懂了呢

那麼||就講到這裡了,因為實在太簡單了

3.!

這裡的!可不是一般的!

他的意思是不等於

就比如剛剛講邏輯或的時候,我輸出了一個“a不等於b”

我們就可以寫成a!=b

!的大名叫做邏輯非

注意!使用英文輸入法寫出來的

不信你看看

!!!!

!!!!

底下的是英文輸入法的,也就是邏輯非

當然,我們把邏輯或的例子改一改(其實是偷懶而已)

if(a!=b)cout<<"a不等於b";

當然了,邏輯非不只能變成!=

!=才是不等於的意思!!!!

!是邏輯非的意思!!!

那麼我們還可以這樣寫

if(!(1>2))cout<<"1>2";

if(1>2)cout<<"1>2";

看出不同了嗎

第一種用了邏輯非

也就是說當非1>2的時候

也就是說當1不大於2的時候

那麼怎麼怎麼著

所以說返回了true

當然第二種的話

1>2肯定不對啊

所以說返回false

注意,!的用法就只有兩種

!=是不等於

!條件a

不要告訴我有什麼!> !<之類的,沒有!!!

如果你真的想寫a!>b的話

你應該這樣寫!(a>b)

四、邏輯表示式的組成與運用

我們先把邏輯運算子捋一下

條件a&&條件b

條件a||條件b

!條件a

好了開始吧

邏輯表示式非常簡單啊啊

億點都不難

比如

!(a>b)就是邏輯表示式(我真的複製了,你聽我狡辯!)

當然,還有更麻煩的

(!(a>b)||!(a<c))&&!(a<b)&&!(a>c))

這句話的意思是:

當a不大於b或者a不小於c,並且a不小於b且a不小於c

也就是說a小於等於b或者a小於等於c時,a必須等於b且等於c才能fanhuitrue

也就是說!!!!

a==b&&a==c

有沒有感受到邏輯表示式的魅力呢(doge)

(我真的是故意這麼繞的,你們聽我狡辯*2)

其實邏輯表示式就是看你的需求去組合了

比如我想讓a>b並且b>c

正常寫是這樣:

a>b&&b>c

麻煩點是這樣:

!(a<b)&&!(b<c)

簡單點是這樣:

a>c

所以說這個就要看你的意願了

五、靈活運用邏輯運算子構成邏輯表示式以及分析邏輯表示式

咳咳,我們來測試下(其實這個標題就是為了測試)

a=13,b=12,c=9

1.

(!(a>b)&&!c)&&a

請問是true還是false

2.

!(!((!(a<b)&&c)&&a*c>b)||!(!(!a))))&&(a+b>c||a+c>b||b+c>a)

請問是true還是false

不要瞎蒙啊(內心:看不懂吧?快瞎蒙快瞎蒙)

這麼簡單別錯啊

1.false

2.true

六、總結

又到了一年n(n^n^n^n)度的總結時刻了

這次我們聯絡了邏輯表示式和邏輯運算子

出錯的原因qwq

(1)邏輯運算子寫錯(你幹啥吃的)

(2)邏輯錯了

(3)變數名寫錯(你幹啥吃的*2)

(4)if或者else或者else if用錯(你幹啥吃的*3,去第二部分吧)

(5)沒搞懂i--或者--i(這個不歸這部分管,但屬於邏輯)

(6)格式錯誤(你幹啥吃的*n^n^n)

那麼今天到這裡,歡迎下次再來看qwq