2012-03-04 78 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