【发布时间】:2017-03-17 11:42:15
【问题描述】:
int main()
{
int i;
int v = 5;
for (i = 0; v; i++)
{
v &= (v - 1);
printf("%d\n", v);
}
return 0;
}
我知道它会在两次迭代后退出,但为什么呢?
【问题讨论】:
-
v什么时候变成false,即0?
-
添加更多打印并自己解释
-
调试器也是你的朋友。这里有机会在一个简单的示例中使用它,然后习惯于一直使用它。
-
hint... 5 是二进制的 101,而 4 是二进制的 100。所以 5 & 4(按位与)是 4
-
我看到你已经击落了几个似乎正确的答案。如果人们没有给你想要的答案,你需要问一个不同的问题。