为了账号安全,请及时绑定邮箱和手机立即绑定

对于比类型的宽度更多位的位移,C标准怎么说?

对于比类型的宽度更多位的位移,C标准怎么说?

C
至尊宝的传说 2019-11-04 10:33:12
考虑以下代码:int i = 3 << 65;我希望结果是i==0,但是实际结果是i==6。通过一些测试,我发现使用以下代码:int i, s;int a = i << s;int b = i << (s & 31);值a和b始终是相同的。C标准是否对移位超过32位(type的宽度int)说了什么,还是这种未指定的行为?
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

从我的WG12 / N1124草案(不是标准,但对我来说足够好)中,在6.5.7 位移位运算符中包含以下块:


如果右操作数的值为负或大于或等于提升的左操作数的宽度,则行为是不确定的。


因此,undefined。小心。


查看完整回答
反对 回复 2019-11-04
  • 2 回答
  • 0 关注
  • 342 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信