Nello spostamento a sinistra di (char) 0xff per 8 e convertendolo in int otteniamo -256 o 0xffffff00. Qualcuno può spiegare perché questo dovrebbe accadere?In C Left shift (char) 0xFF per 8 e trasmetterlo a int
#include <stdio.h>
int main (void)
{
char c = 0xff;
printf("%d %x\n", (int)(c<<8),(int)(c<<8));
return 0;
}
uscita è
-256 ffffff00
firma di char è l'implementazione definita. –