2013-02-11 63 views
-2

大小我得到一个大小discepancy而在使用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没有标志

+3

在“%d”格式说明符中是否需要修饰符?不确定。试试“%ld”? – OldProgrammer 2013-02-11 01:51:33

+0

是的,那正是需要的。谢谢! – pratikm 2013-02-11 02:06:46

回答

9

您正在打印它作为一个正常的整数:printf("%d")。尝试将其打印为长整数:printf("%ld ...")