不久前,有人告诉我long
在64位计算机上不是64位,我应该始终使用int
。这对我来说没有意义。我已经看到文档(例如Apple官方网站上的文档)说long
在为64位CPU进行编译时确实是64位。我查看了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--)
。