2014-02-12 63 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) 
{ 

}