Citazione:
Originalmente inviato da frank Anzi, meglio ancora e più efficiente: Codice: // MAXPAGLIONI e' il numero massimo di paglioni
int mask, i;
if (PORTA)
for (mask=1, i=1; i < MAXPAGLIONI+1; mask = mask << 1, i++)
if (PORTA & mask) break;
// al termine del ciclo, i contiene il numero del paglione colpito |
Ci sono le eccezioni in alcuni casi (vedi 3, 5 etc)
i < MAXPAGLIONI+1; è inefficiente. Fai una somma ad ogni ciclo.
piuttosto:
i <= MAXPAGLIONI;