csdn說明:
條件「或」運算子 (||) 執行bool運算元的邏輯「或」運算,但僅在必要時才計算第二個運算元。同時我們還要了解到 || 和 && 都是左結合性的邏輯運算子,所以看下面的例子件「與」運算子 (&&) 執行其bool運算元的邏輯「與」運算,但僅在必要時才計算第二個運算元
class program
console.readkey();}}
所以在判斷到d>b為true時,後面的部分c > b && a>b就不會再運算,進入條件語句裡面
更正:上面的結果原因是由於 && 的優先順序高於 || ,所以上面的條件相當於 d>b || (c>b && a>b) 。在看乙個例子
1if ( a > b && c > b || d >b)
2
上面這個結果也是ture,以為上面的條件相當於 (a>b && c>b) || d>b。
上面我們已經知道了&& 的優先順序高於 || ,那麼下面我們通過兩位一種方式看看 && 和 || 的短路特性(就是開篇csdn說明:中說的特性)及其的結合性。
看下面的**
1class
program210
11static
bool
getfalse()
1216
17static
void main(string
args)
1823
2425 }
輸出結果為
execute gettrue():1
execute gettrue():2分析:由於&& 優先順序比較高,所以條件相當於(gettrue() && gettrue() )|| getfalse() ,所以執行第乙個gettrue()時,還會執行第二個gettrue()才能確定真個表示式為真,其實對於 || 後面的方面,就會被短路,不被執行,因為前面的結果已經可以證明整個表示式為true。true
我們再換個邏輯表示式
1static
void main(string
args)
2
輸出結果為
execute getfalse():1
execute getfalse():2分析:由於&& 優先順序比較高,所以條件相當於(gettrue() && gettrue() )|| getfalse() ,所以執行第乙個getfalse()時,(gettrue() && gettrue() )就一定為假,所以後面的gettrue()不會執行,被短路,這個裡面我們也可以看出&& 和 || 是從左到右的結合方式,這個時候我們必須繼續執行||後面的邏輯,才能確認整個表示式是真是假,所以getfalse會被執行。false
上面是我這邊的更正,如果有錯誤或疏忽之處,望不惜賜教!
C 條件變數使用詳解
目錄 condition variable介紹 細節說明 wait wait for說明 wait 成員函式 wait for 成員函式 notify all notify one 虛假喚醒 條件變數使用 在c 11中,我們可以使用條件變數 condition variable 實現多個執行緒間的同...
dynamic cast的使用條件
c 提供了兩種方式來支援rtti,dynamic cast是其中一種,另一種是typeid 表面上看,dynamic cast有兩種形式 base pbase new derived derived pderived dynamic castpbase base refbase derived de...
條件 CSS的使用
介紹 毫無疑問,任何乙個試圖使用 css 的網頁設計師和開發人員都會發現不同的瀏覽器要求不同的樣式宣告。這些煩惱歸咎於各瀏覽器及其各版本不同程度的 css 執www.cppcns.com行的完整性。條件 css 是這個問題的乙個解決方案,採用的是 internet explorer 的條件注釋語法的...