2012-03-04 81 views
0

我無法搞清楚爲什麼這是不工作...簡單的「如果」有「或」聲明

if (index != 10 || index != 0) {     

如果index = 0功能,仍然允許在,爲什麼呢?

+0

嘗試像這樣的表達 - > if((index!= 10)||(index!= 0)) – B4NZ41 2012-03-04 21:58:15

+0

我認爲不可能使'if'false – ajax333221 2012-03-05 02:46:56

回答

5

當索引爲零時,它不是十。

雙管道是一個邏輯OR運算符。當左側或右側爲真時,表達式返回true。

如果你打算返回false當指數不爲10和零,使用邏輯AND,&&

if (index != 10 && index != 0) { 
+1

PS。如果'index'預計是一個真正的數字,則使用'!=='而不是'!='。 'false!= 0','[]!= 0','['']!= 0','[0]!= 0'和'['0']!= 0'返回false,雙方當然不等於零。 – 2012-03-04 22:02:43

1

是的,它會,因爲使用||意味着如果兩個條件中的任何一個成立,它就會運行。因此,因爲0不是10,所以會運行,因爲在使用||時只有一個條件需要得到滿足。

如果你希望它不會被允許的,因爲你使用的是OR例如使用&&代替||,這樣,如果兩個條件都滿足

2

它將只運行||。所以首先它說索引!= 10這是真的,因爲它等於0,因此它進入條件。

您需要將其更改爲(index!= 10 & & index!= 0)。

1

如果index的計算結果爲一個數字,其中一個條件將總是爲真。

嘗試

if (!(index == 0 || index == 10)) { 
    ... 
} 
0

此時應更換||與& &。不要混淆||。如果任何條件是true而& & & AND運算符評估爲true當且僅當所有條件都是true,則評估爲OR運算符並且被評估爲true