﻿# V616\. Use of 'Foo' named constant with 0 value in bitwise operation\.

Анализатор обнаружил использование нулевой константы в битовой операции И \( & \)\. Результатом такого выражения всегда будет нулевое значение\. Это может привести к неправильной логике работы программы, если такое выражение используется в условиях или циклах\.

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

```cpp
enum { FirstValue, SecondValue };
int Flags = GetFlags();
if (Flags & FirstValue)
{...}
```

Выражения в условии оператора 'if' всегда равно нулю\. Это приводит к неверной логике выполнения программы\. Как правило, ошибки использования нулевых констант в битовых операциях, возникают из\-за опечаток или некорректного объявления констант\.  Например, может оказаться, что в этом месте следовало использовать другую константу\. Корректный вариант кода:

```cpp
enum { FirstValue, SecondValue };
int Flags = GetFlags();
if (Flags & SecondValue)
{...}
```

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

```cpp
enum { FirstValue = 1, SecondValue }; 
int Flags = GetFlags();
if (Flags & FirstValue)
{...}
```