﻿# V578\. Suspicious bitwise operation was detected\. Consider inspecting it\.

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

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

```cpp
if (up & (PARAMETER_DPDU | PARAMETER_DPDU | PARAMETER_NG))
```

Здесь два раза используется константа PARAMETER\_DPDU\. В корректном коде должны использоваться две разных константы: PARAMETER\_DPDU и PARAMETER\_DPDV\. Буква 'U' похожа на 'V' поэтому и возникла такая опечатка\.  Исправленный вариант:

```cpp
if (up & (PARAMETER_DPDU | PARAMETER_DPDV | PARAMETER_NG))
```

Другой пример\. Здесь ошибки нет, но код избыточен:

```cpp
if (((pfds[i].dwFlags & pPFD->dwFlags) & pPFD->dwFlags)
    != pPFD->dwFlags)
```

Сокращенный вариант:

```cpp
if ((pfds[i].dwFlags & pPFD->dwFlags) != pPFD->dwFlags)
```