不久前,有人告诉我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--)。