Moderators: david ward, misra cpp
- Posts: 1
- Joined: Fri Jul 19, 2019 11:32 am
- Company: SourceBrella
Is there a implicit conversion in shift expressions?
The underlying type of the result is the underlying type of the shift-expression.
Code: Select all
u32 + i8; // i8 -> u32
u32 += i8; // i8 -> u32
u32 << i8; // ?
i8 << u32; // ?
u32 <<= i8; // i8 -> ?
i8 <<= u32; // ?
- Posts: 148
- Joined: Mon Jun 02, 2008 1:55 pm
- Company: MISRA
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