C 长int的大小不一致

C 长int的大小不一致,c,C,在C中使用long int时,我得到了一个大小差异。以下代码: #include <stdio.h> void main() { printf("%d\n", sizeof(long int)); } 给出0(按31移位得到-2147483648,即-2**31)。因此,似乎只使用了4个字节。这是什么意思?我使用的gcc 4.4.5没有任何标志您将它作为一个普通整数打印:printf(“%d”)。尝试将其打印为长整数:printf(“%ld…”)是否需要对“%d”格式说明

在C中使用
long int
时,我得到了一个大小差异。以下代码:

#include <stdio.h>

void main()
{
    printf("%d\n", sizeof(long int));
}

给出0(按31移位得到-2147483648,即-2**31)。因此,似乎只使用了4个字节。这是什么意思?我使用的gcc 4.4.5没有任何标志

您将它作为一个普通整数打印:
printf(“%d”)
。尝试将其打印为长整数:
printf(“%ld…”)

是否需要对“%d”格式说明符进行修改?不确定。尝试“%ld”?是的,这正是需要的。谢谢
#include <stdio.h>

void main()
{
    long int a;
    a = 1;
    a = a << 32;
    printf("%d\n", a);
}