考虑以下代码:
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)说了什么,还是这种未指定的行为?
慕码人2483693
相关分类