2014-02-12 3 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# преобразуются в серии, если это-ELSE конструкций во время компиляции, так что если первое условие не выполняется, остальные не будут проверены.

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

}