В левом сдвиге (char) 0xff на 8 и отбрасывая его на int, получаем -256 или 0xffffff00. Может ли кто-нибудь объяснить, почему это должно произойти?
#include <stdio.h>
int main (void)
{
char c = 0xff;
printf("%d %x\n", (int)(c<<8),(int)(c<<8));
return 0;
}
Выход
-256 ffffff00