2013-02-11 17 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 ...")