少し前まで、誰かがlong64ビットマシンでは64ビットではないと言ってきましたint。私は常にを使用する必要があります。これは私には意味がありませんでした。long64ビット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--)。