Start here

Home
About Klocwork
What's new
Fixed issues
Release notes
Installation

Reference

C/C++ checkers
Java checkers
C# checkers
MISRA C 2004 checkers
MISRA C++ 2008 checkers
MISRA C 2012 checkers
MISRA C 2012 checkers with Amendment 1
Commands
Metrics
Troubleshooting
Reference

Product components

C/C++ Integration build analysis
Java Integration build analysis
Desktop analysis
Refactoring
Klocwork Static Code Analysis
Klocwork Code Review
Structure101
Tuning
Custom checkers

Coding environments

Visual Studio
Eclipse for C/C++
Eclipse for Java
IntelliJ IDEA
Other

Administration

Project configuration
Build configuration
Administration
Analysis performance
Server performance
Security/permissions
Licensing
Klocwork Static Code Analysis Web API
Klocwork Code Review Web API

Community

View help online
Visit RogueWave.com
Klocwork Support
Rogue Wave Videos

Legal

Legal information

MISRA.CAST.INT.SIGN

Non-trivial integral expression is cast to type with different signedness.

MISRA-C++ Rule 5-0-9 (required): An explicit integral conversion shall not change the signedness of the underlying type of a cvalue expression.

Rationale

A signed to unsigned conversion may lead to an expression having a value inconsistent with developer expectations.

Example

void f ( )
{
   int8_t s8;
   uint8_t u8;

   s8 = static_cast< int8_t >( u8 + u8 );   // Non-compliant
   s8 = static_cast< int8_t >( u8 )
      + static_cast< int8_t >( u8 );        // Compliant
}

In the above example, the expression ( u8 + u8 ) is performed with an underlying type of 'uint8_t' rather than 'int8_t'.