Tipos conflictivos en C, ¿por qué?
Estoy tratando de escribir una práctica básica con C, trabajando con Binary y Hex. Hice un método para imprimir los múltiplos de 2 (potencias de 2) y un método separado para imprimir la forma Hex de ese múltiplo de 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);
}
Lo que no entiendo es por qué recibo un error de "tipos en conflicto" al llamar al método "printHex". Específicamente solicito un entero sin signo y cuando llamo al método dentro del parámetro (que asumo que es un entero sin signo "temp"), el compilador no acepta.