﻿# V556\. Values of different enum types are compared\.

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

Пример:

```cpp
enum ErrorTypeA { E_OK, E_FAIL };
enum ErrorTypeB { E_ERROR, E_SUCCESS };
void Foo(ErrorTypeB status) {
  if (status == E_OK)
  { ... }
}
```

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

```cpp
void Foo(ErrorTypeB status) {
   if (status == E_SUCCESS)
  { ... }
}
```

Сравнение значений различных типов перечислений \(enum\) не обязательно является ошибкой\. Но подобный код нуждается в проверке \(code review\)\.