JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.
If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.
If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.
| CodeSonar® 9.2p0 | CONFIDENTIAL | CodeSecure Inc |
For an operator that performs the 'usual arithmetic conversions' (as described in the C90 and C99 standards), the two operands do not have the same essential type category. This check applies to
Exception 1: for binary + and +=, a warning of this class will not be issued if one operand has essentially character type and the other has essentially signed type or essentially unsigned type.
Exception 2: for binary - and -=, a warning of this class will not be issued if the LHS operand has essentially character type and the RHS operand has essentially signed type or essentially unsigned type.
Exception 3: a warning of this class will not be issued if one operand has essentially real floating type and the other has essentially complex floating type. (For the ternary ?: operator, this exception applies to the second and third operands.)
This warning class utilizes the notion of essential type category as described in MISRA C:2012 Guidelines for the use of the C language in critical systems.
| Class Name | Mismatched Operand Types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Significance | style | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Mnemonic | LANG.TYPE.MOT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Categories |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Availability | Available for C and C++. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Enabling | Checks for this warning class are disabled by default,
and require the unnormalized
C ASTs for the project. To enable them, add the following
WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes WARNING_FILTER += allow class="Mismatched Operand Types" |
unsigned int TYPE_MOT(signed int s, unsigned int u, char c){
char mychar;
unsigned int i=0;
mychar = c + u; /* exception case 1 */
if (mychar > 'a'){
mychar -= s; /* exception case 2 */
}
if (mychar > 'a'){
i = u + s; /* 'Mismatched Operand Types' warning issued here */
}
if (u < c){ /* 'Mismatched Operand Types' warning issued here */
i = u==5 ? c : s; /* 'Mismatched Operand Types' warning issued here */
}
return i;
}
The following configuration file parameters affect checks for this warning class.
To report problems with this documentation, please visit https://support.codesecure.com/.