MISRA C++:2023 Rule 7.0.5
Integral promotion and the usual arithmetic conversions shall not change the signedness or the type category of an operand
Since R2024b
Description
Rule Definition
Integral promotion and the usual arithmetic conversions shall not change the signedness or the type category of an operand. 1
Rationale
Some conversions from signed to unsigned data types or change in type category can lead to implementation-defined behavior. You can see unexpected results from the conversion.
Polyspace Implementation
The checker flags:
Implicit conversions from a signed to an unsigned integer data type or vice versa.
The checker assumes that
ptrdiff_t
is a signed integer.Changes in type category.
Based on the MISRA™ C++:2023 specifications, the rule checker classifies types into four categories:
Character:
char
,wchar_t
,char16_t
andchar32_t
Integer: Signed and unsigned integer and unscoped enumeration types, including
signed char
andunsigned char
Floating point:
float
,double
andlong double
Other:
bool
,void
, andnullptr_t
Troubleshooting
If you expect a rule violation but Polyspace® does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
Group: Standard Conversions |
Category: Required |
Version History
Introduced in R2024b1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.