2014-02-12 243 views
-1

我只是想知道如何可以状态如果x + y + z%2 == 0但只做这个语句如果三个值没有设置为0.我要求值为0。Modulus Visual Studio 2013

我的代码示例& posStatus可能包含值为0的变量。问题是,当它们全部三个都为0时出现问题。用户和程序随着时间的推移填写这些值。

else if (posStatus[0] + posStatus[4] + posStatus[8] % 2 == 0) 
{ 
    if (posStatus[0] == 0) 
    { 
     posStatus[0] = 2; 
     return; 
    } 
    else if (posStatus[4] == 0) 
    { 
     posStatus[4] = 2; 
     return; 
    } 
    else if (posStatus[8] == 0) 
    { 
     posStatus[8] = 2; 
     return; 
    } 
} 
+0

快速下注...您滥用[优先顺序和评估顺序](http://msdn.microsoft.com/en-us/library/2bxt6kc4.aspx)。尝试添加括号。 –

+0

这似乎不是一个问题..问题是,如果在这个例子中的数组0,4和8并不总是被初始化。如果其中一个是没有什么大不了的,但是如果它们都没有发生,那么就会发生这个问题。如果所有3都不是= 0 – Zain

+0

我很抱歉,但我不明白你在说什么。 '你在这个例子中的数组0,4和8是什么意思,并不总是被初始化'? – Tarec

回答

1
if(posStatus[0] != 0 && 
    posStatus[4] != 0 && 
    posStatus[8] != 0 && 
    (posStatus[0] + posStatus[4] + posStatus[8]) % 2 == 0) 
{ 
    // Do something 
} 
+0

这很好,因为它首先使用短路来评估便宜的选项。 – Haney

2
if((x!=0 && y!=0 && z!=0) && x + y + z % 2 == 0) 
    //do your stuff 

在C#逻辑运算符在编译过程中转换成一系列的if-else结构的,所以如果第一个条件是不正确的,其他的将不检查。

0
if((posStatus[0]!=0 && posStatus[4]!=0 && posStatus[8]!=0) && 
    (posStatus[0] + posStatus[4] + posStatus[8]) % 2 == 0) 
{ 

}