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

The analyzer detected that a variable is assigned a value that is beyond its value range\.

Consider a few examples that trigger this warning:

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

Assigning the `100` value to a variable of `bool` type makes no sense\. This may be a typo, and some other variable was probably meant to be used instead of `b`\.

Another example:

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

The `flag` bit field can take values from the range `[-1, 0]`, not `[0, 1]`, as it might seem at first\. The reason is that this variable is signed\. If you need a bit field with the range `[0, 1]`, make it `unsigned`:

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