C語言高階 邏輯運算子分析15

2022-08-26 02:36:09 字數 1166 閱讀 5354

印象中的邏輯運算子:

---學生:老師,在我的印象中,邏輯運算子用在條件判斷的時候,真挺簡單的,還有必要深究嗎?

---老師:邏輯運算子確實在條件判斷的時候用的比較多,但是並不能說簡單。。。

請思考下面的示例:

1 #include 2

3int

main()

4

我們分析一下第九行的**,邏輯與&&的優先順序更高,應該限制性++j和++k,然後根據短路原則,++i不用執行,但是真的是這樣嗎?

執行結果和我們分析的完全相反,為什麼呢,邏輯與的優先順序是更高啊!

程式中的短路:

---  ||  從左向右開始計算:

--- &&  從左往右開始計算:

咦?短路原則需要遵循從左往右開始計算,那麼是不是與我們認可的優先順序原則矛盾呢?

其實沒有:邏輯表示式中,毫無疑問 && 比 || 具有更高的優先順序

其實上面例子中的第九行**可以稍微改變一下結構     ++i || ++j && ++k;   >>>>>  (++i) || (++j && ++k);  >>>>>  (true&& ++i) || (++j && ++k); 

在 && 和 || 混合運算的時候,整個表示式被看做 || 表示式,編譯器從左向右開始計算每乙個 && 表示式(遵循了優先順序原則),當某個 && 表示式的值為真的時候,停止計算,整個表示式的值為真。

理解完了上面的**可以嘗試著看一下這段**:

1 #include 2

3int g = 0;4

5int

f()6

1112

intmain()

1318

19 printf("

in main(): %d\n

", g);

2021

return0;

22 }

具體的分析思路和上面一樣!

還有一種邏輯運算子  「!」   它究竟是什麼呢?

c預言中的邏輯非 !只認得0,只知道見了0就返回1.因此當其碰見的值不是0時,其結果為0.

示例:

1 #include 2

3int

main()

4

這段**的執行結果就很好的說明了邏輯非!運算子只認得0。

小結:

C語言高階剖析 15 邏輯運算子分析

一提到邏輯運算子,第一印象就是經常用在條件判斷中,挺簡單的。其實邏輯運算子確實在條件判斷中用的比較多,但是真的很簡單嗎?下面來看乙個例子 邏輯運算子有 和 他們真的很簡單嗎,下面看乙個例子?15 1.c include intmain 執行結果如下 已知 的優先順序高於 根據執行結果看,j 和 k ...

C語言 邏輯運算子

邏輯運算子 含義 與ll 或!非邏輯表示式表示式的求值順序是從左往右。一旦發現有使整個表示式為假的因素,立即停止求值。c提供條件表示式作為表達if else語句的一種便捷方式,該表示式使用?條件運算子。分為兩部分,需要3個運算物件。三元運算子 條件表示式的通用形式為 expression1 expr...

C語言 邏輯運算子

邏輯與運算子 邏輯或運算子 邏輯非運算子 運算的結果只有2個,真 為1,假 為0 邏輯與運算子 1.使用格式 條件a 條件b 2.運算結果 只有當條件a與條件b,為真的時候,它的結果才為1,也就是真 其餘情況下結果都為0,也就是假,所以,條件a或條件b只要有乙個不成立,結果都為0,也就是假 邏輯與的...