私と私の友人は、長距離で非常に奇妙な問題に遭遇しました。つまり、基本的に、私のコンピューターには 64 ビット プロセッサが搭載されていますが、32 ビット システムが搭載されています。彼は 32 ビット OS と CPU の両方を持っています。
まず、 printfed sizeof(long long)
. 私たち二人にとって、それは8でした。
次に、これを行いました。
long long blah = 1;
printf ("%lld\n", blah<<40);
私にとって、これは 1099511627776 を返します (これは正しい結果です)。彼にとっては0です。
そんなことがあるものか?私たちは両方とも同じ sizeofs を持っています。
前もって感謝します。
編集:コード ブロック 12.11 を使用して Win7 でコンパイルして実行しました。彼は Win XP と同じバージョンの CB を使用しています。
EDIT2: 要求されたソース コード:
#include <cstdio>
int main()
{
long long blah = 1;
printf ("%lld\n", blah<<40);
return 0;
}
と
#include <cstdio>
int main()
{
printf ("%d", sizeof(long long));
return 0;
}