/ / Czy można podzielić wyrażenie za pomocą OR na dwa przypadki? - c

Czy można podzielić wyrażenie z OR na dwa przypadki? - c

Chcę użyć instrukcji switch, a mój warunek dla if to:

if (userInput%2 == 0 || userInput != 0)

Czy mogę pobrać z tego kodu dwie sprawy do wykonania różnych akcji userInput == 0 i inny dla userInput == 0

case ?:

case ?:

Odpowiedzi:

3 dla odpowiedzi № 1

Nie możesz, ponieważ zestaw wartości spełnia dwa warunki zakładka. W szczególności wszystkie liczby parzyste spełniają obie części twoich warunków. Dlatego nie można wykonywać różnych akcji bez zdecydowania, która część warunku ma pierwszeństwo.

Możesz zagrać w małą sztuczkę z wpadnięciem do środka switch oświadczenie, takie jak to:

switch(userInput%2) {
case 0:
// Do things for the case when userInput%2 == 0
...
// Note: missing "break" here is intentional
default:
if (userInput == 0) break;
// Do things for the case when user input is non-zero
// This code will execute when userInput is even, too,
// because of the missing break.
...
}

2 dla odpowiedzi nr 2

Dlaczego nie po prostu podzielić if komunikat

if (userInput%2 == 0) {
// something
}
else if (userInput != 0) {
// something else
}

Należy pamiętać, że kolejność testów będzie ważna, ponieważ wszystkie niezerowe liczby parzyste spełniają oba testy.