ISO/IEC JTC1/SC22/WG14 N723
Changes to shift operators
Clive D.W. Feather
This paper addresses the issues related to shift operators that were
removed from N691.
The proposal only substantively affects the << operator; the result
is defined if E1 is nonnegative and the shift does not reach the sign
bit, and is undefined otherwise.
Modify subclause 6.3.7 (the << and >> operators) as follows:
* In paragraph 3, change "the width in bits" to "the number of value and
sign bits in the object representation".
* Add to the end of paragraph 4 (the << paragraph):
If E1 has a signed type and nonnegative value, and E1 times 2 to
the power E2 is less than or equal to /INT_MAX/ (if E1 has type
/int/), /LONG_MAX/ (if E1 has type /long int/), or LLONG_MAX (if
E1 has type /long long int/), then that is the resulting value.
Otherwise the behavior is undefined.