前言
內容純屬原創,如有雷同,純屬巧合!
如轉載請注明出處!
參考練習
無具體練習題,多練練條件分支類型的語句(比如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才能返回true
也就是說!!!!
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