﻿# V3007\. Odd semicolon ';' after 'if/for/while' operator\.

Анализатор обнаружил потенциальную ошибку, связанную с тем, что после одного из операторов 'for', 'while' или 'if' стоит точка с запятой ';'\.

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

```cpp
int i = 0;
....
for(i = 0; i < arr.Count(); ++i);
  arr[i] = i;
```

В данном коде программист хотел выполнить присваивание для всех элементов массива, но по ошибке поставил ';' после закрывающей скобки цикла\. Таким образом, операция присваивания выполнится только один раз\. К тому же произойдёт выход за границу массива\.

Корректный вариант кода:

```cpp
int i = 0;
....
for(i = 0; i < arr.Count(); ++i)
  arr[i] = i;
```

Конечно, наличие точки с запятой ';' после данных операторов не всегда является ошибкой, и иногда для выполнения необходимых операций не требуется тела цикла\. В таком случае наличие точки с запятой оправдано\. Пример такого кода:

```cpp
int i;
for (i = 0; !char.IsWhiteSpace(str[i]); ++i) ;
Console.WriteLine(i);
```

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