This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).
When applying the unary minus operator to a variable of type 'unsigned int', 'unsigned long', or 'unsigned long long', that variable will keep its type and stay 'unsigned', which makes this operation meaningless.
Applying the unary minus operator to a variable of a shorter 'unsigned' integer type resulting from integer promotion may result in getting a 'signed' value, which is not a good practice, so such an operation will also trigger the warning.
Example of non-compliant code:
unsigned int x = 1U;
int y = -x;
This diagnostic is classified as:
|