 
                            All char and short integer types are promoted to int or unsigned int before they are used in expressions. Consequently, they receive high-order bits. These bits are either zero-extended for unsigned chars and shorts, or are sign-extended for signed chars and shorts. Consequently, arithmetic Arithmetic operations performed on ints yield the same values as on chars and shorts (at least in the low-order bits). However, bitwise operations may yield surprising effects.
...
In this compliant solution, we truncate the negation back down to 8 bits. Consequently, result_8 receives the expected value of 0x0aU.
...
| Recommendation | Severity | Likelihood | Remediation Cost | Priority | Level | 
|---|---|---|---|---|---|
| EXP14-C | low | likely | high | P9 | L1 | 
Automated Detection
| Tool | Version | Checker | Description | 
|---|---|---|---|
| 
 | 
...
| 
 | 
 | 
 | 
Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.
Other Languages
Related Guidelines
This rule appears in the C++ Secure Coding Standard as : EXP15-CPP. Beware of integer promotion when performing bitwise operations on chars or shorts.
Bibliography
| Wiki Markup | 
|---|
| \[[MISRA 042004|AA. Bibliography#MISRA 04]\] Rule 10.5 | 
...