参考本指南:
https ://google.github.io/styleguide/cppguide.html#Integer_Types
谷歌建议int
在大部分时间使用。
我尝试遵循本指南,唯一的问题是 STL 容器。
示例 1。
void setElement(int index, int value)
{
if (index > someExternalVector.size()) return;
...
}
比较index
并.size()
正在生成警告。
示例 2。
for (int i = 0; i < someExternalVector.size(); ++i)
{
...
}
i
和之间的相同警告.size()
。
如果我声明index
or i
as unsigned int
,则警告关闭,但类型声明会传播,然后我必须声明更多变量 as unsigned int
,然后它与指南相矛盾并失去一致性。
我能想到的最好的方法是使用这样的演员:
if (index > static_cast<int>(someExternalVector.size())
或者
for (int i = 0; i < static_cast<int>(someExternalVector.size()); ++i)
但我真的不喜欢演员阵容。
有什么建议吗?
以下是一些详细的想法:
仅使用有符号整数的好处是:我可以避免有符号/无符号警告、强制转换,并确保每个值都可以是负数(保持一致),因此 -1 可用于表示无效值。
在很多情况下,循环计数器的使用与其他一些常量或结构成员混合使用。因此,如果有符号/无符号不一致,就会有问题。将充满警告和铸件。