/ / È possibile dividere l'espressione con OR in due casi? - c

È possibile dividere l'espressione con OR, in due casi? - c

Voglio usare un'istruzione switch e le mie condizioni per if sono:

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

Posso ottenere due casi da questo codice per eseguire diverse azioni per userInput == 0 e diverso per userInput == 0

case ?:

case ?:

risposte:

3 per risposta № 1

Non è possibile, poiché il valore impostato soddisfa le due condizioni sovrapposizione. In particolare, tutti i numeri pari soddisfano entrambe le parti delle condizioni. Ecco perché non è possibile eseguire azioni diverse senza decidere prima quale parte della condizione ha la precedenza.

Puoi giocare un piccolo trucco con fall-through all'interno di switch affermazione, come questa:

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 per risposta № 2

Perché non dividere il if dichiarazione

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

Si noti che l'ordine dei test sarà importante poiché tutti i numeri pari diversi da zero soddisfano entrambi i test.