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;
This diagnostic is classified as:
|
You can look at examples of errors detected by the V786 diagnostic. |