Как я могу отредактировать эту строку, чтобы не быть предупреждением - PullRequest
0 голосов
/ 26 декабря 2018

Следующая строка дает мне предупреждение:

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 голосов
/ 26 декабря 2018

Вы должны использовать тип unsigned для объявления i в заголовке цикла for(), поскольку SpamBannListArray.size(), скорее всего, возвращает тип unsigned:

 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 &.

...