Originariamente inviato da oregon
1) Ma come e' combinato il main? Hai mai compilato questo codice?
OOpps sistemo il tutto...ho fatto copia e incolla delle parti interessate ed ovviamente ho pasticciato un pò...
2) Cosa dovrebbe fare la bitcount?
Contare di quanti bits è composto l'oggetto che passo
2) E sei sicuro che faccia quello che credi?
Penso di si, l'ho presa dal Kernighan & Ritchie
3) Passi sempre A alle funzioni (A e' un puntatore) ma le funzioni NON accettano un puntatore ...
Ok, ma facendo così ottengo un risultato pur con warning nella compilazione, passando *A invece non mi da warning ma non ottengo la scrittura dei bits in out..
Codice PHP:
#include <stdlib.h>
#include <stdio.h>
// funzione per stampare i bits di un intero
void printbits(unsigned x){
if (x==0) printf("0");
else printbits(x>>1);
printf("%d",x&1);
}
/* bitcount: count 1 bits in x */
int bitcount(unsigned x)
{
int b;
for (b = 0; x != 0; x >>= 1)
b++;
return b;
}
// Funzione per settare ad 1 tutti i bit dell'intero passato come argomento
int setbitOn(int x)
{
for (; x != 0; x >>= 1)
x = x | 1;
return x;
}
main () {
int *A;
A = (int *) malloc(20);
printf("Garbage Contents: %d %d\n", A, sizeof(A) );
printf("Bits di A: ");
printbits(A); //stampa 0
printf("\n");
printf("Numero di bits in A: %d\n",bitcount(A)); //stampa 28!!
printf("Bits di A dopo setbitOn(): ");
printbits(setbitOn(A));
printf("\n");
printf("Garbage Contents(2): %d %d\n", A, sizeof(A) );
printf("\n");
free(A);
}