>
>
>
V3116. Consider inspecting the 'for' op…


V3116. Consider inspecting the 'for' operator. It's possible that the loop will be executed incorrectly or won't be executed at all.

Анализатор обнаружил, что в операторе 'for' используются некорректные границы для итератора.

Рассмотрим пример:

for (int i = 0; i < 100; --i)

Очевидно, что данный фрагмент кода содержит ошибку. Значение переменной 'i' будет всегда меньше 100. По крайней мере до тех пор, пока не произойдёт её переполнение. Но вряд ли такое поведение задумывал программист. Для исправления ошибки необходимо в указанном выражении либо заменить оператор декремента '‑‑i' на оператор инкремента '++i':

for (int i = 0; i < 100; ++i)

либо указать корректные границы для переменной 'i', использовав при этом оператор сравнения '>' или '!= ':

for (int i = 99; i >= 0; --i)
for (int i = 99; i != -1; --i)

Выбор наиболее подходящего варианта должен осуществлять автор кода на основе анализа конкретной ситуации.

Данная диагностика классифицируется как:

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V3116.