(char)0xffを左にシフトし、intにキャストすると-256または0xffffff00になります。 誰かがなぜこれが起こるべきか説明できますか?Cで左シフト(char)0xFFを8でキャストしてそれをintにキャスト
#include <stdio.h>
int main (void)
{
char c = 0xff;
printf("%d %x\n", (int)(c<<8),(int)(c<<8));
return 0;
}
出力は
-256 ffffff00
charのsignednessは実装定義です。 –