以下行向我发出警告:
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
为了摆脱上面的警告,我需要更改什么?
答案 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 &
。