關係操作符和邏輯操作符使用算術或指標型別的運算元,並返回bool 型別的值。
操作符功能用法!
logical not(邏輯非)
!expr
<
less than(小於)
expr < expr
<=
less than or equal(小於等於)
expr <= expr
>
greater than(大於)
expr > expr
>=
greater than or equal(大於等於)
expr >= expr
==equality(相等)
expr == expr
!=inequality(不等)
expr != expr
&&logical and(邏輯與)
expr && expr
||logical or(邏輯或)
expr || expr
expr1 && expr2 //logical and
expr1 || expr2 //
logical or
對於&&運算子當且僅當兩個運算物件都為真時結果為真;
對於邏輯||運算子,只要兩個運算物件中的乙個為真,結果就為真。
邏輯與和邏輯或操作符總是先計算其左運算元,然後再計算其右運算元。只有在僅靠左運算元的值無法確定該邏輯表示式的結果時, 才會求解其右運算元。 我們常常稱這種求值策略為「短路求值(short-circuit evaluation)」。
對於邏輯與&&來說,當且僅當左側運算物件為真時才對右側物件求值;
對於邏輯或||來說,當且僅當左側運算物件為假時才對右側物件求值。
邏輯非操作符(!)將其運算元視為條件表示式,產生與其運算元值相反的條件值。
關係操作符(<、<=、>、<=)具有左結合特性。事實上,由於關係操作符返回 bool 型別的結果,因此很少使用其左結合特性。如果把多個關係操作符串接起來使用,結果往往出乎預料:
if (i < j < k)
這種寫法只要 k 大於 1,上述表示式的值就為 true。這是因為第二個小於操作符的左運算元是第乙個小於操作符的結果:true 或 false。也就是,該條件將 k 與整數 0 或 1 做比較。為了實現我們想要的條件檢驗,應重寫上述表示式如下:
if (i < j && j < k)
如果想測試乙個算術物件或指標物件的真值,最直接的方法就是將其作為if語句的條件:
if(val)
if(!val)
有時會試圖將上面的真值測試寫成:
if (val == true)
但這種寫法存在兩個問題:
首先,與之前的**相比,這種寫法較長;
其次,如果val不是布林值,這樣的比較將失去原來的意義,比較之前會將true轉換成val型別,也就是說,如果val不是布林值,則**可以改寫為:
if(val==1)
算術操作符和關係操作符(1)
建議模式 用 操作而不是 省去了複製物件 習題14.12,是用 去呼叫 缺點自然是複製很多次,不過為什麼會出錯,this不是和rhs一樣的引用麼?因為是成員函式,this錯在哪了 inline sales item sales item operator const sales item rhs s...
邏輯操作符
邏輯操作符 與 或 非 邏輯與 只有兩個條件同時滿足的時候才會返回true,兩個條件都是假的返回的結果是false 即 一假即假 當邏輯語操作不是布林值的時候,返回值就不一定是布林值,可分為以下幾種情況 1 當第乙個運算元據是物件時,返回第二個運算元據的值。2 當第二個運算元據為物件時,如果第乙個運...
邏輯操作符
邏輯操作符 只要有乙個條件不成立,返回false 說明 在有乙個運算元不是布林值的情況,邏輯與操作就不一定返回值,此時它遵循下列規則 1 如果第乙個運算元隱士型別轉換後為true,則返回第二個運算元。說明 規則是兩個運算元的情況。例子 console.log 80 50 返回結果 50 2 如果第乙...