﻿# V6047\. It is possible that this 'else' branch must apply to the previous 'if' statement\.

Анализатор обнаружил потенциально возможную ошибку в логических условиях\. Логика работы кода не совпадает с тем, как этот код отформатирован\. 

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

```cpp
if (X)
  if (Y) Foo();
else
  z = 1;
```

Форматирование кода сбивает с толку, и кажется, что присваивание "z \= 1" произойдет в том случае, если X \=\= false\. Однако ветка 'else' относится к ближайшему оператору 'if'\. Другими словами, приведенный код на самом деле эквивалентен следующему коду:

```cpp
if (X)
{
    if (Y)
      Foo();
    else
      z = 1;
}
```

Таким образом, код работает не так, как может показаться на первый взгляд\.

Если выдано предупреждение V6047, то это может означать две вещи:

1\) Код плохо отформатирован и ошибки на самом деле нет\. Тогда, чтобы предупреждение V6047 не выдавалось, а код был более понятен, его нужно отформатировать\. Пример корректного форматирования:

```cpp
if (X)
  if (Y)
    Foo();
  else
    z = 1;
```

2\) Найдена логическая ошибка\. Тогда код можно исправить, например, так:

```cpp
if (X) {
  if (Y)
    Foo();
} else {
  z = 1;
}
```