﻿# V3182\. The result of '&' operator is always '0'\.

Анализатор обнаружил использование побитового 'AND' \(&\) с операндами, при которых результат операции всегда равен 0\. Возможно, использован неподходящий оператор или операнд\. 

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

```cpp
public enum FlagType : ulong
{
  Package = 1 << 1,
  Import = 1 << 2,
  Namespace = 1 << 3,
  ....
}
....
FlagType bitMask = FlagType.Package & FlagType.Import;
```

Здесь 'bitMask' – объект типа перечисления 'FlagType', в котором создаётся битовая маска\.

Подобный метод объединения флагов перечисления является некорректным\. Побитовое 'AND' \(&\) между значениями 'FlagType\.Package' и 'FlagType\.Import' равно нулю, так как эти битовые флаги не содержат единиц в соответствующих разрядах\.

Корректная реализация объединения флагов может выглядеть следующим образом:

```cpp
FlagType bitMask = FlagType.Package | FlagType.Import;
```