在c中的变量和未定义的操作中移位的位数是多少?

Bra*_*tes 1 c

具体来说,我这样做

Word32 x = 18653184;
Word32 y;
Word16 shift = 269;
y = x >> shift;
Run Code Online (Sandbox Code Playgroud)

我希望这个逻辑移位的结果为0,但我得到2277.C如何定义这种类型的操作?

Cor*_*lks 5

是的,根据第6.5.7节第3段,这是不明确的行为

...如果右操作数的值为负或大于或等于提升的左操作数的宽度,则行为未定义.