/ / É possível dividir a expressão com OR para dois casos? - c

É possível dividir a expressão com OR para dois casos? - c

Eu quero usar uma declaração switch, e minha condição para o if é:

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

Posso obter dois casos deste código para executar ações diferentes para userInput == 0 e diferente para userInput == 0

case ?:

case ?:

Respostas:

3 para resposta № 1

Você não pode, porque o valor define satisfazendo as duas condições sobreposição. Especificamente, todos os números pares satisfazem ambas as partes de suas condições. É por isso que você não pode executar ações diferentes sem decidir primeiro qual parte da condição tem precedência.

Você pode jogar um pequeno truque com queda dentro do switch declaração, assim:

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 para resposta № 2

Por que não apenas dividir o if declaração

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

Observe que a ordem dos testes será importante, pois todos os números pares não-zero satisfazem os dois testes.