Cで使用しているときにサイズの不一致が発生してlong int
います。次のコード:
#include <stdio.h>
void main()
{
printf("%d\n", sizeof(long int));
}
出力として 8 を与えるので、64 ビットを使用して を表しlong int
ますよね? しかし:
#include <stdio.h>
void main()
{
long int a;
a = 1;
a = a << 32;
printf("%d\n", a);
}
0 を返します (31 シフトすると -2147483648、つまり -2**31)。そのため、4 バイトしか使用されていないようです。これは何を意味するのでしょうか?フラグなしで gcc 4.4.5 を使用しています