为什么x_temp
没有更新的值,其中作为注释行x &= ~(1 << i);
工作完美。 哪里出问题了?为什么这个代码不工作按预期
int x = 0x4567;
int x_temp = 0x0;// = 0xF0FF;
int y = 0x0200;
int i;
for(i = 8; i < 12; i++)
{//clean clear
x_temp = x & ~(1 << i);
//x &= ~(1 << i); //This line works perfectly.
}
printf("x_temp = %x....\n", x_temp);//Still it retains the value 0x4567.
printf("x = %x....\n", x);
y = x|y; //y = x_temp|y;
printf("y = %x\n", y);
当我在做'X&=〜(1 << 11); 'x值从'0x4567'变为'0x4067'。但是'x_temp = x&〜(1 << 11);' –
@RasmiRanjanNayak不会发生同样的情况是的,因为在一种情况下,你改变'x',而在另一种情况下你不改变。所以当你清除'x'中的下一个位时,在一种情况下,你使用的是修改过的'x'值,而另一种情况下你使用的是原始值。 –
是的,现在我明白了。雅我的怀疑得到了欢呼......真的很好的解释,你们真是太棒了.. –