-2

在 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

4

1 回答 1

9

您将其打印为普通整数:printf("%d"). 尝试将其打印为长整数:printf("%ld ...").

于 2013-02-11T01:51:57.910 回答