The behavior is only well defined if the shift amount is strictly less than the width of the operand. If `size_t` is 32 bits, then shifting right by 32 bits is undefined.
I know of three different ways in which platforms implement shifts by greater than the word size.