﻿# V786\. Assigning the value C to the X variable looks suspicious\. The value range of the variable: \[A, B\]\.

Анализатор обнаружил, что переменной пытаются присвоить значение, которое не входит в её диапазон возможных значений\.

Рассмотрим несколько примеров, для которых анализатор выдает данное диагностическое сообщение:

```cpp
bool b;
....
b = 100;
```

Нет никакого смысла присваивать значение `100` переменной типа `bool`\. Возможно, мы имеем дело с опечаткой и вместо `b` должна использоваться другая переменная\.

Рассмотрим другой пример:

```cpp
struct S
{
  int flag : 1;
}
....
S s;
s.flag = 1;
```

Битовое поле `flag` может принимать значения из диапазона `[-1, 0]`, а не `[0, 1]`, как может показаться на первый взгляд\. Причина в том, что тип переменной знаковый\. Если вам нужно битовое поле с диапазоном в `[0, 1]`, используйте тип `unsigned`:

```cpp
struct S
{
  unsigned flag : 1;
}
....
S s;
s.flag = 1;
```