之前我們介紹了運算表示式,知道了運算表示式可以給我們乙個運算後的具體值。
我們也介紹了條件表示式,知道了條件表示式可以給我們乙個成立/不成立的結果,也就是true/false。
本節我們在條件表示式的基礎上,介紹邏輯表示式。
1、基礎知識
這裡我們簡單回顧一下條件表示式:
這時我們需要觀察,無論我們使用算數運算子、賦值運算子還是條件運算子的時候,對應的表示式要幹啥取決於表示式中的運算子,但是操作的卻是運算子兩邊的運算元。
之前我們在使用運算元的時候,都是確定的內容,要麼是數字,要麼是對應的變數。
但是當我們使用邏輯運算子的時候,對應的運算元的位置,卻是表示式。
邏輯運算子有三個:
&& 與
|| 或
! 非我們使用邏輯表示式的&&和||的結構是:(表示式1)邏輯運算子(表示式2)
比如:
而這裡邏輯運算子的意義是:
&& 與:當運算子左右同時成立的時候,整體表示式成立
|| 或:當運算子左右兩邊,只要有一邊成立,整體表示式成立
我們看上面的例子:其中b>a成立但是a==b不成立,那麼整個表示式便是(成立&&不成立),那麼最後整體的結果當然是不成立(false)嘍。
我們將**簡單修改:
在這裡,我們將&&更換成了||,這時整體的結果是成立,這是為什麼呢?
因為現在的表示式是(成立||不成立),通過||的定義我們知道,只要這個運算子左右兩邊只要有一邊成立,那麼整體就成立。
我們再看兩個例子:
其中,第乙個例子中整體表示式意思是(不成立&&不成立),那麼依據&&的意思,整體表示式是不成立的。
第二個例子中整體表示式的意思是(不成立||不成立),那麼依據||的意思,整體表示式是不成立的。
那麼接下來我們來看第三個邏輯運算子:
! 非:否定表示式
這個邏輯運算子的運算元只有乙個,那麼否定表示式的意思便是,如果運算元位置上的表示式是成立的,那麼整體表示式就是不成立的,如果運算元位置上的表示式是不成立的,那麼整體表示式就是成立的。
我們看**:
這時我們明顯知道,b是大於a的,那麼這個時候,b那麼這兩個例子是怎麼回事?
我們逐一分析:
第乙個例子中,我們通過整理看到(不成立&&不成立&&成立),通過&&的意義我們從左向右分析結果,((不成立&&不成立)&&成立)因為&&操作的是兩邊的運算元,那我們先看前面的,我們這時將(不成立&&不成立)看成乙個整體,這個整體結果是不成立,然後我們將結果帶入後面的運算,就變成了(不成立&&成立),這個結果是不成立,那麼整體(不成立&&不成立&&成立)就是不成立嘍。
第二個例子,我們也用同樣的分析方式,(不成立||不成立||成立),這時先將前面的不成立||不成立看成整體,這個整體是不成立,然後將這個結果帶入後面,就是(不成立||成立),這時我們依據||的意思得到的結果是成立,那麼整體(不成立||不成立||成立)就是成立嘍。
我們用這兩個例子來說明,邏輯表示式是可以連續的,但是遇到連續的情況的時候,因為我們知道這時表示式是操作運算子左右兩邊的運算元的,那麼我們可以在分析的時候,將不同的部分看成不同的整體,進而通過拆分、合併分析的方式進行**分析。
3、基礎引申,利用運算子特點進行運算
我們看**:
這時我們發現,咦,為啥age的結果不一樣?
在這裡,我們需要特別關注一下||,它的定義是只要兩邊有一邊是true,那麼整體返回true。
那麼只要有一邊,就是說,一旦程式發現||的左邊是true那麼直接判定整體為true,就不管||是什麼情況了。
那麼我們細化第乙個例子:
(day < birthday) || (++age > 18)帶入具體內容為,(3<2)||(19>18)
細化第二個例子,便是(3>2)||無需判斷
那麼就是說,第乙個例子中,我們判斷||左邊不成立,於是執行||的內容,而右邊的內容中有自增運算子,所以右邊進行了一次運算。
但是在第二個例子中||左邊成立,所以直接判定整體成立,就不用管右邊了,所以右邊沒有執行。
這裡,我們發現了||執行的特殊之處,但是這有什麼用呢?
比如,我們將上述兩個例子,變成具體的實際程式需求:乙個人的年齡18歲,他的生日是本月2號,我們的要求是用程式判斷當前日期,如果當前沒有到2號,他仍然是18歲,如果當前超過2號,那麼這個人就長了一歲,變成了19歲。
這時我們在看看上面的例子,是不是有種恍然大明白的感覺!
小雨學程式設計之C 15 表示式(續)三元運算子
我們之前接觸了條件運算子 邏輯運算子等幾種運算子及其表示式。在介紹的過程中,我們一直在描述,運算子和運算元的關係及其操作方式。回顧之前的知識點,我們發現我們接觸過的運算子只有兩類 一類是只有乙個運算元的,比如自增 自減運算子 a b 還有邏輯運算子中的非 a b 一類是有左右兩個運算元的,比如算數運...
shell程式設計之正式表示式
二 文字處理器 正規表示式又稱正規表示式 常規表示式。在 中常簡寫為 regex regexp 或 re。正規表示式是使用單個字串來描述 匹配一系列符合某個句法規則的字串,簡單來說,是 一種匹配字串的方法,通過一些特殊符號,實現快速查詢 刪除 替換某個特定字串 正規表示式的字串表達方法根據不同的嚴謹...
小雨學程式設計之C 19 1 流程控制語句 if
我們之前一直在介紹,c 這門程式語言的一些基礎知識,但是在我們編寫 的過程中,我們的 都是直線型流水執行的,也就是依照 在程式中的排列位置從上到下一行一行的順序執行。那麼本節,我們介紹流程控制語句中的if語句,也就是要讓我們的 依照條件是否滿足,或者根據表示式的值控制 產生執行分支。語法 if 條件...