请帮助解决这个问题并解释逻辑.我不知道&运营商是如何在这里工作的.
void main() {
int a = -1;
static int count;
while (a) {
count++;
a &= a - 1;
}
printf("%d", count);
}
Run Code Online (Sandbox Code Playgroud)
如果你指的是
a&=a-1;
Run Code Online (Sandbox Code Playgroud)
然后它是一个按位和a和a-1的操作复制到后来.
编辑:在评论中从TadeuszA.Kadłubowski复制:
a = a & (a-1);
Run Code Online (Sandbox Code Playgroud)