2002 – 5

Considerate il seguente frammento di programma, dove n contiene un intero non negativo; che cosa viene stampato?

if((n % 2) != (n & 1))
    printf("vero\n");
else
    printf("falso\n");

Risposte:

  1. Viene stampato vero se n è pari, e falso se n è dispari.
  2. Viene stampato vero se n è dispari, e falso se n è pari.
  3. Viene stampato sempre vero.
  4. Viene stampato sempre falso.

Soluzione: d (viene stampato sempre falso)/em>.


Osserva

  • n % 2 restituisce il resto della divisione per 2 (se n è pari sarà 0 altrimenti 1)
  • n & 1 restituisce il bit meno significativo in base 2 (se n è pari sarà 0 altrimenti 1).