我如何编辑此行以免发出警告

时间:2018-12-26 20:01:44

标签: c++ warnings

以下行向我发出警告:

for (int i = 0; i < SpamBannListArray.size(); i++)
char.cpp: In member function 'bool CHARACTER::SpamListCheck(const char*)':
char.cpp:7280: warning: comparison between signed and unsigned integer expressions

为了摆脱上面的警告,我需要更改什么?

1 个答案:

答案 0 :(得分:5)

您应在unsigned循环头中使用i类型声明for(),因为SpamBannListArray.size()最有可能返回unsigned类型:< / p>

 for (unsigned int i = 0; i < SpamBannListArray.size(); i++)
   // ^^^^^^^^

 for (size_t i = 0; i < SpamBannListArray.size(); i++)

否则,当您达到负值时,您的代码可能容易出现signed值溢出/环绕。


如使用基于范围的for()循环的注释中所指出的那样,在当前的c ++标准中,无需指定索引变量应该是首选:

for (auto item : SpamBannListArray) {
    // Do something with item
}

如果需要就地操作项目,请使用auto &