Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V3116. Consider inspecting the 'for'...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

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

01 Сен 2016

Анализатор обнаружил, что в операторе '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.