Unsigned right shift (``++>>>++``) fills from the left with 0's, versus signed right shift (``++>>++``), which fills with the sign bit. There's no point in using ``++>>>++`` unless you care about the upper bits of the result, so casting a ``++>>>++``-ed value to a smaller type (which discards the upper bits) is likely a mistake. Either ``++>>++`` should have been used, or the cast was made in error.


== Noncompliant Code Example

----
int i = -1;
short s = (short)i >>> 4; /// Noncompliant
----


== See

* https://wiki.sei.cmu.edu/confluence/x/kDZGBQ[CERT, NUM52-J.] - Be aware of numeric promotion behavior 

