我在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
答案 0 :(得分:9)
您将其打印为普通整数:printf("%d")
。尝试将其打印为长整数:printf("%ld ...")
。