Shifting by an invalid number of positionssuggest change
For the built-in shift operator, the right operand must be nonnegative and strictly less than the bit width of the promoted left operand. Otherwise, the behavior is undefined.
const int a = 42; const int b = a << -1; // UB const int c = a << 0; // ok const int d = a << 32; // UB if int is 32 bits or less const int e = a >> 32; // also UB if int is 32 bits or less const signed char f = 'x'; const int g = f << 10; // ok even if signed char is 10 bits or less; // int must be at least 16 bits
Table Of Contents