我最近开始使用 -Wall 编译器开关来尝试提高我的代码质量。它正在(正确地)给出关于这个小片段的警告......
int i;
for (i = start - 1; i >= 0; i--)
{
if (i >= number1.array.size())
{
one_value = 0;
}
因为 number1.array.size 是无符号的(它是 std::vector 上的 size 方法)。由于循环中的测试是 i >= 0,因此必须对 i 进行签名,否则它不起作用。看来我有三个选择;避免使用 -Wall、忽略警告或引入辅助元素...
int i;
unsigned int j;
for (i = start - 1; i >= 0; i--)
{
j = i;
if (j >= number1.array.size())
{
one_value = 0;
}
这些似乎都不是特别可取的。您能否提出任何替代方案,或就在这种情况下我应该做什么提出建议?