2016-11-15 3 views
-1

私はCで次のforループを持っています。Word Sizeが32ビットではなく64ビットである理由を知りたいのですが。次のCコードで私のWordsize 64ビットはなぜですか?

#define WSIZE 8*sizeof(int) 
long pcount_for(unsigned long x) 
{ 
    size_t = i; 
    long result = 0; 
    for (i = 0; i < WSIZE; i++) 
    { 
     unsigned bit = (x >> i) & 0x1; 
     result += bit; 
    } 
    return result; 
} 
+3

あなたのシステムで 'sizeof(int)'が '8 'なので? –

+0

プラットフォームとコンパイラはどのように使用されていますか? – chux

+0

私は64ビットシステムです。私はINTサイズが4バイトだと思った?プラットフォームは64ビットx-86/64です。 GCCコンパイラ。 – RR84

答えて

0

"int"のサイズは、お使いのマシンのアーキテクチャによって異なります。 32ビットでコンパイルする場合は、おそらく4バイトになります(したがって、8 * 4 = 32、期待通り)

AMD64では、int32_tを使用して4バイトにする必要があります。

+1

"AMD64では、int32_tを使用して4バイトにする必要がありますが、データモデルによって異なります。私のx86-64 Linuxシステムでは、 'sizeof(int)'は4です。https://en.wikipedia.org/wiki/64-bit_computing – davmac

+0

を参照してください。現在、64ビットintを持つアーキテクチャはめったにありません –

関連する問題