请考虑以下代码:
int i = 3 << 65;
Run Code Online (Sandbox Code Playgroud)
我希望结果是i==0,但实际结果是i==6.通过一些测试,我发现使用以下代码:
int i, s;
int a = i << s;
int b = i << (s & 31);
Run Code Online (Sandbox Code Playgroud)
值a和b始终是相同的.
C标准是否说过关于移位超过32位(类型的宽度int)的任何内容,还是这种未指定的行为?