關係操作符和邏輯操作符

2022-05-28 10:15:10 字數 1540 閱讀 7829

關係操作符和邏輯操作符使用算術或指標型別的運算元,並返回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 如果第乙...