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