如何编辑此行不再是一个警告

Dut*_*tzų 0 c++ warnings

以下行给了我一个警告:

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

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

πάν*_*ῥεῖ 5

你应该在循环头中使用一个unsigned类型来声明,因为最有可能返回一个类型:ifor()SpamBannListArray.size()unsigned

 for (unsigned int i = 0; i < SpamBannListArray.size(); i++)
   // ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

要么

 for (size_t i = 0; i < SpamBannListArray.size(); i++)
Run Code Online (Sandbox Code Playgroud)

否则,signed在遇到负值时,您的代码可能会出现值溢出/包装.


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

for (auto item : SpamBannListArray) {
    // Do something with item
}
Run Code Online (Sandbox Code Playgroud)

如果您需要在内部操作项目,请使用auto &.

  • @kirikoumath实际上不是那个文字`0`.你必须写至少写`auto i = 0u` (3认同)