-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 に答える