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:

bool b;
....
b = 100;

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

Another example:

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':

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

According to Common Weakness Enumeration, potential errors found by using this diagnostic are classified as CWE-197.

You can look at examples of errors detected by the V786 diagnostic.


Bugs Found

Checked Projects
355
Collected Errors
13 303