Sprzeczne typy w C, dlaczego?
Próbuję napisać podstawową praktykę z C, pracując z Binary i Hex. Zrobiłem metodę wydrukowania wielokrotności 2 (potęgi 2) i oddzielnej metody drukowania formy Hex tej wielokrotności 2.
#include <stdlib.h>
#include <stdio.h>
const char one = 1;
const int bits = 31;
void print2 ()
{
unsigned int u = (int)one;
unsigned int j;
printf("The powers of 2 are:\n");
for(j=0;j<bits;j++)
{
unsigned int temp = u<<j;
printf("%d\n",abs(temp));
printhex(temp);
}
printf("\n\n");
}
void printhex (unsigned int u)
{
printf("0x%08X\n",u);
}
int main ()
{
print2();
return(EXIT_SUCCESS);
}
Czego nie rozumiem, to dlaczego dostaję błąd „sprzeczne typy” z wywołaniem metody „printHex”. W szczególności pytam o liczbę całkowitą bez znaku, a gdy wywołam metodę w parametrze (co zakładam, że jest to liczba całkowita bez znaku „temp”), kompilator nie akceptuje.