﻿# V535\. The 'X' variable is used for this loop and outer loops\.

The analyzer detected a potential error: a nested loop is arranged by a variable which is also used in an outer loop\.

In a schematic form, this error looks in the following way:

```cpp
size_t i, j;
for (i = 0; i != 5; i++)
  for (i = 0; i != 5; i++)
    A[i][j] = 0;
```

Of course, this is an artificial sample, so we may easily see the error, but in a real application, the error might be not so apparent\. This is the correct code:

```cpp
size_t i, j;
for (i = 0; i != 5; i++)
  for (j = 0; j != 5; j++)
    A[i][j] = 0;
```

Using one variable both for the outer and inner loops is not always a mistake\. Consider a sample of correct code the analyzer won't generate the warning for:

```cpp
for(c = lb; c <= ub; c++)
{
  if (!(xlb <= xlat(c) && xlat(c) <= ub))
  {
    Range * r = new Range(xlb, xlb + 1);
    for (c = lb + 1; c <= ub; c++)
      r = doUnion(
        r, new Range(xlat(c), xlat(c) + 1));
    return r;
  }
}
```

In this code, the inner loop "for \(c \= lb \+ 1; c <\= ub; c\+\+\)" is arranged by the "c" variable\. The outer loop also uses the "c" variable\. But there is no error here\. After the inner loop is executed, the "return r;" operator will perform exit from the function\.