En el desplazamiento a la izquierda de (char) 0xff por 8 y fundiéndolo en int obtenemos -256 o 0xffffff00. ¿Alguien puede explicar por qué esto debería suceder?En C Desplazamiento izquierdo (char) 0xFF por 8 y conversiónelo en int
#include <stdio.h>
int main (void)
{
char c = 0xff;
printf("%d %x\n", (int)(c<<8),(int)(c<<8));
return 0;
}
salida es
-256 ffffff00
firmado de char es la implementación definida. –