# V637. Use of two opposite conditions. The second condition is always false.

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

Примеры взаимоисключающих условий:

- 'A == B' и 'A != B';
- 'B < C' и 'B > C';
- 'X == Y' и 'X < Y';
- и так далее.

Как правило, такая ошибка возникает вследствие опечатки или неудачного рефакторинга. В результате логика выполнения программы нарушается.

Рассмотрим пример некорректного кода:

    if (A == B)
      if (B != A)
        B = 5;

В данном случае высказывание "B = 5;" никогда не будет выполнено. Скорее всего, в первом или втором условиях используется некорректная переменная. Следует посмотреть логику выполнения программы.

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

    if (A == B)
      if (B != C)
        B = 5;

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

CWE-570

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