C Trick

Da Andreabont's Wiki.

Questa pagina contiene dei trucchi validi sia in C che in C++

Controllo pari/dispari

E' possibile controllare se un intero è pari o dispari semplicemente guardando il suo ultimo bit.

int n = 5;
if(n & 1) {
   // Dispari
} else {
   // Pari
}

Controllo potenza del due

E' possibile controllare se un intero è una potenza del due tramite questa espressione booleana.

int n = 16;
if(n && !(n & (n - 1))) {
   // Si
} else {
   // No
}

Moltiplicazione per potenze di 2

Utilizzando lo shift a sinistra si può facilmente moltiplicare un intero per una potenza del due.

int a = 10 << 1; // 10 * 2^1 = 10 * 2 = 20
int b = 10 << 2; // 10 * 2^2 = 10 * 4 = 40

Divisione per potenze di 2

Utilizzando lo shift a destra si può facilmente dividere (senza resto) un intero per una potenza del due.

int a = 10 >> 1; // 10 / 2^1 = 10 / 2 = 5
int b = 10 >> 2; // 10 / 2^2 = 10 / 4 = 2

Contatore a decremento

Questo ciclo permette di contare decrementando una variabile.

int n = 5;
while (n --> 0) {
   // n assumerà i valori 4, 3, 2, 1 e 0
}