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. |