我发现一些有线问题,当我尝试做32次左移时。测试函数中的代码应该打印出相同的结果0x0,但我得到了“ffffffff,0”。任何人都可以暗示代码有什么问题?谢谢!按位左移意外结果
int test(int n) {
int mask = ~0 << (32 + ~n + 1);
int mask1 = ~0 << (32 + ~0 + 1);
printf("%x, %x\n", mask, mask1);
return mask;
}
int main(){
test(0);
}
同样与http://stackoverflow.com/questions/3784996/why-does-left-shift-operation-invoke-undefined-behaviour-when-the-left-side-oper – MOHAMED 2013-05-07 16:30:07
你可以尝试制作int声明一个unsigned int并告诉我们它是否会有所作为? – 2014-01-07 19:54:14