在 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
最佳答案
您将其打印为普通整数:printf("%d")
。尝试将其打印为长整数:printf("%ld ...")
。
关于c - long int 的大小差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14804831/