...
One way to check whether a number is even or odd is to examine the least significant bit, but the results will be inconsistent. Specifically, this example gives unexpected behavior on all ones' complement implementations.:
Code Block | ||||
---|---|---|---|---|
| ||||
int value; if (scanf("%d", &value) == 1) { if (value & 0x1 != 0) { /* do something if value is odd */ } } |
...
The same thing can be achieved compliantly using the modulo operator.:
Code Block | ||||
---|---|---|---|---|
| ||||
int value; if (scanf("%d", &value) == 1) { if (value % 2 != 0) { /* do something if value is odd */ } } |
...
Recommendation | Severity | Likelihood | Remediation Cost | Priority | Level |
---|---|---|---|---|---|
INT16-C | medium | unlikely | high | P2 | L3 |
...