少し前まで、誰かがlong
64ビットマシンでは64ビットではないと言ってきましたint
。私は常にを使用する必要があります。これは私には意味がありませんでした。long
64ビットCPU向けにコンパイルすると、確かに64ビットであるというドキュメント(Appleの公式サイトにあるものなど)を見てきました。私はそれが64ビットWindowsで何であったかを調べて見つけました
- Windowsの場合:
long
とは、int
長さが32ビットのままで、そして特殊な新しいデータ型は、64ビット整数のために定義されています。
(http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2から)
何を使うべきですか?Windowsではない場合uw
、sw
((un)signed width)のように定義する必要がありますかlong
?それ以外の場合は、ターゲットCPUのビットサイズをチェックしますか?
sizeof(long) == 8
でもWindows上で、 :-)
size_t
またはイテレータ型反復するために、ではないint
かint64_t
size_t
であるため、負の数の近くではトリッキーになりsize_t
ます。そのfor(size_t i=0; i<v.size()-2; i++)
ため、ベクターサイズ0と1 では失敗します。別の例:for(size_t i=v.size()-1; i>=0; i--)
。