La funzione conta il numero di 1 presenti nella rappresentazione binaria di un intero n. se la provo con 3 funziona se la provo con -3 o qualsiasi altro numero negativo non si arresta.
int f(unsigned int n) {
int c = 0;
for (; n ; n >>= 1)
c = (n & 0x01)? c+1: c;
return c;
}
AVEVO PENSATO DI RISOLVERE COSÌ:
#include <stdio.h>
#include <stdlib.h>
int f(unsigned int n);
int main()
{
unsigned int n;
int h;
scanf("%u",&n);
h=f(n);
printf("%d\n",h);
return 0;
}
int f(unsigned int n) {
int c = 0;
for (; n ; n >>= 1)
c = (n & 0x01)? c+1: c;
return c;
}
ma il problema è che mi va a stampare altri numeri. Può dipendere dalla rappresentazione che fa il processore??