Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Underlying type's implicit conversion of the shift operators
Is there a implicit conversion in shift expressions?

Quote:The underlying type of the result is the underlying type of the shift-expression.

int8_t i8;
uint8_t u8;
uint32_t u32;
int32_t i32;

u32 + i8; // i8 -> u32
u32 += i8; // i8 -> u32

The first two are compliant, as they are performed as u32.

The four shift operators are compliant for this rule as they have the underlying type of the left argument, but may run into the rule about not shifting more than the length of the left operand (5-8-1), and 5-0-21 bans shifting of signed values.
Posted by and on behalf of
the MISRA C++ Working Group

Forum Jump:

Users browsing this thread: 1 Guest(s)