shift-expression:additive-expressionshift-expression<<additive-expressionshift-expression>>additive-expression

The operands shall be of integral or unscoped enumeration type and integral
promotions are performed.

The type of the result is that of the promoted
left operand.

The behavior is undefined if the right operand is negative, or greater
than or equal to the length in bits of the promoted left operand.

If E1 has an unsigned type, the value of the result
is , reduced modulo
one more than the maximum value representable in the result type.

Otherwise, if
E1 has a signed type and non-negative value, and is
representable in the corresponding unsigned type of the result type, then
that value, converted to the result type, is the resulting value; otherwise, the
behavior is undefined.

If E1 has an unsigned type or if E1 has a
signed type and a non-negative value, the value of the result is the
integral part of the quotient of .